Fixes #203 confirm password dialog

This commit is contained in:
Charelle Collett 2020-05-17 19:28:09 +10:00 committed by Firstyear
parent 16267e8a29
commit d4e73ef5c9
2 changed files with 30 additions and 7 deletions

View file

@ -1,5 +1,7 @@
use crate::common::CommonOpt;
use structopt::StructOpt;
use crate::password_prompt;
#[derive(Debug, StructOpt)]
pub struct AccountCommonOpt {
@ -162,10 +164,13 @@ impl AccountOpt {
AccountOpt::Credential(acopt) => match acopt {
AccountCredential::SetPassword(acsopt) => {
let client = acsopt.copt.to_client();
let password = rpassword::prompt_password_stderr(
format!("Enter new password for {}: ", acsopt.aopts.account_id).as_str(),
)
.unwrap();
let password = match password_prompt(format!("Enter new password for {}: ", acsopt.aopts.account_id).as_str() ) {
Some(v) => v,
None => {
println!("Passwords do not match");
return
}
};
client
.idm_account_primary_credential_set_password(
@ -234,9 +239,14 @@ impl AccountOpt {
}
AccountPosix::SetPassword(aopt) => {
let client = aopt.copt.to_client();
let password =
rpassword::prompt_password_stderr("Enter new unix (sudo) password: ")
.unwrap();
let password = match password_prompt("Enter new unit (sudo) password: ") {
Some(v) => v,
None => {
println!("Passwords do not match");
return
}
};
client
.idm_account_unix_cred_put(
aopt.aopts.account_id.as_str(),

View file

@ -101,3 +101,16 @@ impl ClientOpt {
}
}
}
pub(crate) fn password_prompt(prompt: &str) -> Option<String> {
let password = rpassword::prompt_password_stderr(prompt).unwrap();
let password_confirm = rpassword::prompt_password_stderr(
"Retype the new password to confirm: ").unwrap();
if password == password_confirm {
Some(password)
} else {
None
}
}