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(())
|
|
}
|
|
}
|
|
}
|
|
}
|