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