From 973d1cac6bc0d065af1b5e07435c42b6bec2eea1 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Wed, 16 Jan 2013 17:46:53 -0600 Subject: [PATCH] user-accounts: Don't reject passwords that pwquality says are ok Fix for the OK button being insensitive for many "weak" passwords Also fixes "not good enough" password being accepted https://bugzilla.gnome.org/show_bug.cgi?id=691907 --- panels/user-accounts/um-password-dialog.c | 54 ++++++++++++----------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/panels/user-accounts/um-password-dialog.c b/panels/user-accounts/um-password-dialog.c index 655bfc6a3..47acd177e 100644 --- a/panels/user-accounts/um-password-dialog.c +++ b/panels/user-accounts/um-password-dialog.c @@ -68,6 +68,31 @@ typedef enum { UM_PASSWORD_DIALOG_MODE_UNLOCK_ACCOUNT } UmPasswordDialogMode; +static int +update_password_strength (UmPasswordDialog *um) +{ + const gchar *password; + const gchar *old_password; + const gchar *username; + gint strength_level; + const gchar *hint; + const gchar *long_hint; + + password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); + old_password = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry)); + username = act_user_get_user_name (um->user); + + pw_strength (password, old_password, username, + &hint, &long_hint, &strength_level); + + gtk_level_bar_set_value (GTK_LEVEL_BAR (um->strength_indicator), strength_level); + gtk_label_set_label (GTK_LABEL (um->strength_indicator_label), hint); + gtk_widget_set_tooltip_text (um->strength_indicator, long_hint); + gtk_widget_set_tooltip_text (um->strength_indicator_label, long_hint); + + return strength_level; +} + static void generate_one_password (GtkWidget *widget, UmPasswordDialog *um) @@ -259,18 +284,20 @@ update_sensitivity (UmPasswordDialog *um) const gchar *old_password; const gchar *tooltip; gboolean can_change; + int strength_level; password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry)); old_password = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry)); + strength_level = update_password_strength (um); - if (strlen (password) < pw_min_length ()) { + if (strength_level < 1) { can_change = FALSE; if (password[0] == '\0') { tooltip = _("You need to enter a new password"); } else { - tooltip = _("The new password is too short"); + tooltip = _("The new password is not strong enough"); } } else if (strcmp (password, verify) != 0) { @@ -343,29 +370,6 @@ show_password_toggled (GtkToggleButton *button, gtk_entry_set_visibility (GTK_ENTRY (um->verify_entry), active); } -static void -update_password_strength (UmPasswordDialog *um) -{ - const gchar *password; - const gchar *old_password; - const gchar *username; - gint strength_level; - const gchar *hint; - const gchar *long_hint; - - password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); - old_password = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry)); - username = act_user_get_user_name (um->user); - - pw_strength (password, old_password, username, - &hint, &long_hint, &strength_level); - - gtk_level_bar_set_value (GTK_LEVEL_BAR (um->strength_indicator), strength_level); - gtk_label_set_label (GTK_LABEL (um->strength_indicator_label), hint); - gtk_widget_set_tooltip_text (um->strength_indicator, long_hint); - gtk_widget_set_tooltip_text (um->strength_indicator_label, long_hint); -} - static void update_password_match (UmPasswordDialog *um) {