diff options
Diffstat (limited to 'src/kim/lib/kim_credential.c')
-rw-r--r-- | src/kim/lib/kim_credential.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/kim/lib/kim_credential.c b/src/kim/lib/kim_credential.c index 443269891..3dd17af84 100644 --- a/src/kim/lib/kim_credential.c +++ b/src/kim/lib/kim_credential.c @@ -254,8 +254,25 @@ kim_error kim_credential_create_new_with_password (kim_credential *out_credentia if (identity) { done_with_identity = 1; - } else { - err = kim_ui_enter_identity (&context, options, &identity); + + } else while (!err && !identity) { + kim_boolean user_wants_change_password = 0; + + err = kim_ui_enter_identity (&context, options, + &identity, + &user_wants_change_password); + + if (!err && user_wants_change_password) { + err = kim_identity_change_password_common (identity, 1, + &context, + NULL); + + /* reenter enter_identity so just forget this identity + * even if we got an error */ + if (err == KIM_USER_CANCELED_ERR) { err = KIM_NO_ERROR; } + kim_identity_free (&identity); + } + } if (!err) { |