Refactor reset_prepare()
to reduce indents
This commit is contained in:
parent
5b3e56954e
commit
b155c17337
1 changed files with 31 additions and 40 deletions
71
src/main.rs
71
src/main.rs
|
@ -58,49 +58,40 @@ fn reset_prepare(config: &Ldap0rConfig, keys: &Keys, email_address: &str) -> Res
|
||||||
ldap.unbind()?;
|
ldap.unbind()?;
|
||||||
let (rs, _res) = result.success()?;
|
let (rs, _res) = result.success()?;
|
||||||
|
|
||||||
if rs.len() == 1 {
|
if rs.len() != 1 {
|
||||||
// generate key
|
|
||||||
let mut rng = rand::thread_rng();
|
|
||||||
let key: String = (0..64)
|
|
||||||
.map(|_| BASE62[rng.gen::<usize>() % 62] as char)
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// store key with id
|
|
||||||
let keys = Arc::clone(&keys.keys);
|
|
||||||
if let Ok(mut keys) = keys.lock() {
|
|
||||||
keys.insert(key.to_string(), email_address.to_string());
|
|
||||||
debug!("Generated new key for '{}'", email_address);
|
|
||||||
|
|
||||||
// generate email
|
|
||||||
let email = EmailBuilder::new()
|
|
||||||
.to(email_address)
|
|
||||||
.from("ldap0r@example.com")
|
|
||||||
.subject("LDAP password reset")
|
|
||||||
.text(format!(
|
|
||||||
"Use following url to set a new password: {}/reset/{}",
|
|
||||||
config.domain, key
|
|
||||||
))
|
|
||||||
.build()?;
|
|
||||||
|
|
||||||
// send email
|
|
||||||
let mut mailer = SmtpClient::new_unencrypted_localhost()?.transport();
|
|
||||||
let result = mailer.send(email.into());
|
|
||||||
|
|
||||||
if result.is_ok() {
|
|
||||||
info!("Password reset email was sent to '{}'", email_address);
|
|
||||||
} else {
|
|
||||||
bail!(
|
|
||||||
"Sending password reset email with reset URL to '{}' failed",
|
|
||||||
email_address
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bail!("Could not aquire lock for keys");
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
bail!("Invalid password reset request for '{}'", email_address);
|
bail!("Invalid password reset request for '{}'", email_address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// generate key
|
||||||
|
let mut rng = rand::thread_rng();
|
||||||
|
let key: String = (0..64)
|
||||||
|
.map(|_| BASE62[rng.gen::<usize>() % 62] as char)
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// store key with id
|
||||||
|
let keys = Arc::clone(&keys.keys);
|
||||||
|
let mut keys = keys
|
||||||
|
.lock()
|
||||||
|
.map_err(|e| anyhow!("Could not aquire lock for keys: {}", e))?;
|
||||||
|
keys.insert(key.to_string(), email_address.to_string());
|
||||||
|
debug!("Generated new key for '{}'", email_address);
|
||||||
|
|
||||||
|
// generate email
|
||||||
|
let email = EmailBuilder::new()
|
||||||
|
.to(email_address)
|
||||||
|
.from("ldap0r@example.com")
|
||||||
|
.subject("LDAP password reset")
|
||||||
|
.text(format!(
|
||||||
|
"Use following url to set a new password: {}/reset/{}",
|
||||||
|
config.domain, key
|
||||||
|
))
|
||||||
|
.build()?;
|
||||||
|
|
||||||
|
// send email
|
||||||
|
let mut mailer = SmtpClient::new_unencrypted_localhost()?.transport();
|
||||||
|
mailer.send(email.into())?;
|
||||||
|
info!("Password reset email was sent to '{}'", email_address);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue