static gboolean validate (GisPasswordPage *page) { GisPasswordPagePrivate *priv = gis_password_page_get_instance_private (page); const gchar *password; const gchar *verify; gint strength_level; const gchar *hint; const gchar *long_hint; if (priv->timeout_id != 0) { g_source_remove (priv->timeout_id); priv->timeout_id = 0; } password = gtk_entry_get_text (GTK_ENTRY (priv->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (priv->confirm_entry)); pw_strength (password, NULL, priv->username, &hint, &long_hint, &strength_level); gtk_level_bar_set_value (GTK_LEVEL_BAR (priv->password_strength), strength_level); gtk_label_set_label (GTK_LABEL (priv->password_explanation), long_hint); if (strlen (password) > 0 && strength_level <= 0) set_entry_validation_error (GTK_ENTRY (priv->password_entry), _("This is a weak password.")); else clear_entry_validation_error (GTK_ENTRY (priv->password_entry)); gtk_label_set_label (GTK_LABEL (priv->confirm_explanation), ""); priv->valid_confirm = FALSE; priv->valid_password = (strength_level > 0); if (priv->valid_password) set_entry_validation_checkmark (GTK_ENTRY (priv->password_entry)); if (strlen (password) > 0 && strlen (verify) > 0) { priv->valid_confirm = (strcmp (password, verify) == 0); if (!priv->valid_confirm) { gtk_label_set_label (GTK_LABEL (priv->confirm_explanation), _("The passwords do not match.")); } else { set_entry_validation_checkmark (GTK_ENTRY (priv->confirm_entry)); } } update_page_validation (page); return FALSE; }
static gint 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; if (um->user == NULL) { return 0; } 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->password_hint), long_hint); if (strength_level > 0) { set_entry_validation_checkmark (GTK_ENTRY (um->password_entry)); } else if (strlen (password) == 0) { set_entry_generation_icon (GTK_ENTRY (um->password_entry)); } else { clear_entry_validation_error (GTK_ENTRY (um->password_entry)); } return strength_level; }
static void auth_cb (PasswdHandler *handler, GError *error, UmPasswordDialog *um) { if (error) { um->old_password_ok = FALSE; } else { um->old_password_ok = TRUE; set_entry_validation_checkmark (GTK_ENTRY (um->old_password_entry)); } update_sensitivity (um); }
static void update_password_match (UmPasswordDialog *um) { const char *password; const char *verify; password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry)); if (strlen (password) > 0 && strlen (verify) > 0) { if (strcmp (password, verify) != 0) { gtk_label_set_label (GTK_LABEL (um->verify_hint), _("The passwords do not match.")); } else { gtk_label_set_label (GTK_LABEL (um->verify_hint), ""); set_entry_validation_checkmark (GTK_ENTRY (um->verify_entry)); } } }