comparison libpurple/account.c @ 22711:7097bbac4234

Allow changing to or from an empty password when the protocol specifies that passwords are optional
author Stu Tomlinson <stu@nosnilmot.com>
date Wed, 23 Apr 2008 16:38:08 +0000
parents e62b3625cc54
children d1797f30960f
comparison
equal deleted inserted replaced
22710:a666d3e7447f 22711:7097bbac4234
1357 _("New passwords do not match."), NULL); 1357 _("New passwords do not match."), NULL);
1358 1358
1359 return; 1359 return;
1360 } 1360 }
1361 1361
1362 if (orig_pass == NULL || new_pass_1 == NULL || new_pass_2 == NULL || 1362 if ((purple_request_fields_is_field_required(fields, "password") &&
1363 *orig_pass == '\0' || *new_pass_1 == '\0' || *new_pass_2 == '\0') 1363 (orig_pass == NULL || *orig_pass == '\0')) ||
1364 (purple_request_fields_is_field_required(fields, "new_password_1") &&
1365 (new_pass_1 == NULL || *new_pass_1 == '\0')) ||
1366 (purple_request_fields_is_field_required(fields, "new_password_2") &&
1367 (new_pass_2 == NULL || *new_pass_2 == '\0')))
1364 { 1368 {
1365 purple_notify_error(account, NULL, 1369 purple_notify_error(account, NULL,
1366 _("Fill out all fields completely."), NULL); 1370 _("Fill out all fields completely."), NULL);
1367 return; 1371 return;
1368 } 1372 }
1374 purple_account_request_change_password(PurpleAccount *account) 1378 purple_account_request_change_password(PurpleAccount *account)
1375 { 1379 {
1376 PurpleRequestFields *fields; 1380 PurpleRequestFields *fields;
1377 PurpleRequestFieldGroup *group; 1381 PurpleRequestFieldGroup *group;
1378 PurpleRequestField *field; 1382 PurpleRequestField *field;
1383 PurpleConnection *gc;
1384 PurplePlugin *prpl = NULL;
1385 PurplePluginProtocolInfo *prpl_info = NULL;
1379 char primary[256]; 1386 char primary[256];
1380 1387
1381 g_return_if_fail(account != NULL); 1388 g_return_if_fail(account != NULL);
1382 g_return_if_fail(purple_account_is_connected(account)); 1389 g_return_if_fail(purple_account_is_connected(account));
1390
1391 gc = purple_account_get_connection(account);
1392 if (gc != NULL)
1393 prpl = purple_connection_get_prpl(gc);
1394 if (prpl != NULL)
1395 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
1383 1396
1384 fields = purple_request_fields_new(); 1397 fields = purple_request_fields_new();
1385 1398
1386 group = purple_request_field_group_new(NULL); 1399 group = purple_request_field_group_new(NULL);
1387 purple_request_fields_add_group(fields, group); 1400 purple_request_fields_add_group(fields, group);
1388 1401
1389 field = purple_request_field_string_new("password", _("Original password"), 1402 field = purple_request_field_string_new("password", _("Original password"),
1390 NULL, FALSE); 1403 NULL, FALSE);
1391 purple_request_field_string_set_masked(field, TRUE); 1404 purple_request_field_string_set_masked(field, TRUE);
1392 purple_request_field_set_required(field, TRUE); 1405 if (!(prpl_info && (prpl_info->options | OPT_PROTO_PASSWORD_OPTIONAL)))
1406 purple_request_field_set_required(field, TRUE);
1393 purple_request_field_group_add_field(group, field); 1407 purple_request_field_group_add_field(group, field);
1394 1408
1395 field = purple_request_field_string_new("new_password_1", 1409 field = purple_request_field_string_new("new_password_1",
1396 _("New password"), 1410 _("New password"),
1397 NULL, FALSE); 1411 NULL, FALSE);
1398 purple_request_field_string_set_masked(field, TRUE); 1412 purple_request_field_string_set_masked(field, TRUE);
1399 purple_request_field_set_required(field, TRUE); 1413 if (!(prpl_info && (prpl_info->options | OPT_PROTO_PASSWORD_OPTIONAL)))
1414 purple_request_field_set_required(field, TRUE);
1400 purple_request_field_group_add_field(group, field); 1415 purple_request_field_group_add_field(group, field);
1401 1416
1402 field = purple_request_field_string_new("new_password_2", 1417 field = purple_request_field_string_new("new_password_2",
1403 _("New password (again)"), 1418 _("New password (again)"),
1404 NULL, FALSE); 1419 NULL, FALSE);
1405 purple_request_field_string_set_masked(field, TRUE); 1420 purple_request_field_string_set_masked(field, TRUE);
1406 purple_request_field_set_required(field, TRUE); 1421 if (!(prpl_info && (prpl_info->options | OPT_PROTO_PASSWORD_OPTIONAL)))
1422 purple_request_field_set_required(field, TRUE);
1407 purple_request_field_group_add_field(group, field); 1423 purple_request_field_group_add_field(group, field);
1408 1424
1409 g_snprintf(primary, sizeof(primary), _("Change password for %s"), 1425 g_snprintf(primary, sizeof(primary), _("Change password for %s"),
1410 purple_account_get_username(account)); 1426 purple_account_get_username(account));
1411 1427