Mercurial > pidgin
changeset 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 | a666d3e7447f |
children | 387071b0d4d4 |
files | libpurple/account.c |
diffstat | 1 files changed, 21 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/account.c Wed Apr 23 16:37:28 2008 +0000 +++ b/libpurple/account.c Wed Apr 23 16:38:08 2008 +0000 @@ -1359,8 +1359,12 @@ return; } - if (orig_pass == NULL || new_pass_1 == NULL || new_pass_2 == NULL || - *orig_pass == '\0' || *new_pass_1 == '\0' || *new_pass_2 == '\0') + if ((purple_request_fields_is_field_required(fields, "password") && + (orig_pass == NULL || *orig_pass == '\0')) || + (purple_request_fields_is_field_required(fields, "new_password_1") && + (new_pass_1 == NULL || *new_pass_1 == '\0')) || + (purple_request_fields_is_field_required(fields, "new_password_2") && + (new_pass_2 == NULL || *new_pass_2 == '\0'))) { purple_notify_error(account, NULL, _("Fill out all fields completely."), NULL); @@ -1376,11 +1380,20 @@ PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; + PurpleConnection *gc; + PurplePlugin *prpl = NULL; + PurplePluginProtocolInfo *prpl_info = NULL; char primary[256]; g_return_if_fail(account != NULL); g_return_if_fail(purple_account_is_connected(account)); + gc = purple_account_get_connection(account); + if (gc != NULL) + prpl = purple_connection_get_prpl(gc); + if (prpl != NULL) + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); + fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); @@ -1389,21 +1402,24 @@ field = purple_request_field_string_new("password", _("Original password"), NULL, FALSE); purple_request_field_string_set_masked(field, TRUE); - purple_request_field_set_required(field, TRUE); + if (!(prpl_info && (prpl_info->options | OPT_PROTO_PASSWORD_OPTIONAL))) + purple_request_field_set_required(field, TRUE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("new_password_1", _("New password"), NULL, FALSE); purple_request_field_string_set_masked(field, TRUE); - purple_request_field_set_required(field, TRUE); + if (!(prpl_info && (prpl_info->options | OPT_PROTO_PASSWORD_OPTIONAL))) + purple_request_field_set_required(field, TRUE); purple_request_field_group_add_field(group, field); field = purple_request_field_string_new("new_password_2", _("New password (again)"), NULL, FALSE); purple_request_field_string_set_masked(field, TRUE); - purple_request_field_set_required(field, TRUE); + if (!(prpl_info && (prpl_info->options | OPT_PROTO_PASSWORD_OPTIONAL))) + purple_request_field_set_required(field, TRUE); purple_request_field_group_add_field(group, field); g_snprintf(primary, sizeof(primary), _("Change password for %s"),