36 lines
1.4 KiB
Rust
36 lines
1.4 KiB
Rust
|
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(())
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|