Mercurial > pidgin
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 |