Password reset functionality
On the `reset` page an email address can be submitted. If an account associated with the submitted email address an email is sent containing an URL. This URL can be used to set a new password. - Add GPLv3 for licensing - Add dependencies - `rocket_contrib` to be able to use handlebar templates - `anyhow` to handle errors - `log` for logging - `ldap3` to communicate with a LDAP server - `lettre` and `lettre_email` to handle the generation of emails and to send them - `rand` to generate random keys - Add `README.org` which is also used to generate `README.md` - Add configuration parameters - domain - LDAP - server - base - filter - bind - password - Change default development address to 0.0.0.0 - Add structs to handle data - Add functions to handle password reset actions - `reset_prepare()` to generate a new key, send it to the requestor and keep it in the memory - `set_password()` to check for the key and set the password - Add routes - Add tests - Add templates - `reset.html.hbs` to submit an email address - `reset_key.html.hbs` to set the new password
This commit is contained in:
parent
6d247c63ba
commit
7b0e4b4a31
10 changed files with 2566 additions and 35 deletions
20
src/tests.rs
20
src/tests.rs
|
@ -2,8 +2,24 @@ use rocket::{self, local::Client, routes};
|
|||
|
||||
#[test]
|
||||
fn index() {
|
||||
let rocket = rocket::ignite().mount("/", routes![super::index]);
|
||||
let rocket = rocket::ignite().mount("/", routes![super::index, super::reset]);
|
||||
let client = Client::new(rocket).unwrap();
|
||||
let mut response = client.get("/").dispatch();
|
||||
assert_eq!(response.body_string(), Some("Hello, ldap0r!".into()));
|
||||
assert_eq!(response.status().code, 303);
|
||||
assert!(response.body().is_none());
|
||||
for h in response.headers().iter() {
|
||||
match h.name.as_str() {
|
||||
"Location" => assert_eq!(h.value, "/reset"),
|
||||
"Content-Length" => assert_eq!(h.value.parse::<i32>().unwrap(), 0),
|
||||
_ => { /* let these through */ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reset() {
|
||||
let rocket = rocket::ignite().mount("/", routes![super::reset]);
|
||||
let client = Client::new(rocket).unwrap();
|
||||
let mut response = client.get("/reset").dispatch();
|
||||
assert_eq!(response.body_string(), Some("Reset ldap0r!".into()));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue