aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/ui/account/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/ui/account/mod.rs')
-rw-r--r--server/src/routes/ui/account/mod.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/server/src/routes/ui/account/mod.rs b/server/src/routes/ui/account/mod.rs
index 63c01c5..9007558 100644
--- a/server/src/routes/ui/account/mod.rs
+++ b/server/src/routes/ui/account/mod.rs
@@ -5,9 +5,9 @@
*/
pub mod admin;
pub mod session;
+pub mod settings;
use self::session::SessionCookie;
-
use super::{error::MyError, layout::LayoutPage};
use crate::{
database::{Database, User},
@@ -120,7 +120,7 @@ pub fn r_account_register_post<'a>(
Some(&User {
display_name: form.username.clone(),
name: form.username.clone(),
- password: hash_password(&form.password),
+ password: hash_password(&form.username, &form.password),
admin: false,
}),
)
@@ -148,7 +148,7 @@ pub fn r_account_login_post(
};
// hashing the password regardless if the accounts exists to prevent timing attacks
- let password = hash_password(&form.password);
+ let password = hash_password(&form.username, &form.password);
let user = database
.users
@@ -177,7 +177,7 @@ pub fn r_account_logout_post(jar: &CookieJar) -> MyResult<Redirect> {
Ok(Redirect::found(uri!(r_home())))
}
-fn format_form_error<T>(form: Form<Contextual<T>>) -> MyError {
+pub fn format_form_error<T>(form: Form<Contextual<T>>) -> MyError {
let mut k = String::from("form validation failed:");
for e in form.context.errors() {
k += &format!(
@@ -191,9 +191,12 @@ fn format_form_error<T>(form: Form<Contextual<T>>) -> MyError {
MyError(anyhow!(k))
}
-pub fn hash_password(s: &str) -> Vec<u8> {
+pub fn hash_password(username: &str, password: &str) -> Vec<u8> {
Argon2::default()
- .hash_password(s.as_bytes(), r"IYMa13osbNeLJKnQ1T8LlA")
+ .hash_password(
+ format!("{username}\0{password}").as_bytes(),
+ r"IYMa13osbNeLJKnQ1T8LlA",
+ )
.unwrap()
.hash
.unwrap()