use crate::error::PeachConfigError; use crate::ChangePasswordOpts; use peach_lib::password_utils::set_new_password; /// Utility function to set the admin password for peach-web from the command-line. pub fn set_peach_web_password(opts: ChangePasswordOpts) -> Result<(), PeachConfigError> { match opts.password { // read password from CLI arg Some(password) => { set_new_password(&password) .map_err(|err| PeachConfigError::ChangePasswordError { source: err })?; println!( "Your new password has been set for peach-web. You can login through the \ web interface with username admin." ); Ok(()) } // read password from tty None => { let pass1 = rpassword::read_password_from_tty(Some("New password: "))?; let pass2 = rpassword::read_password_from_tty(Some("Confirm password: "))?; if pass1 != pass2 { Err(PeachConfigError::InvalidPassword) } else { set_new_password(&pass1) .map_err(|err| PeachConfigError::ChangePasswordError { source: err })?; println!( "Your new password has been set for peach-web. You can login through the \ web interface with username admin." ); Ok(()) } } } }