From 12c1da413d09d48ce85bb46d0629166ce986b5d6 Mon Sep 17 00:00:00 2001 From: curly Date: Tue, 16 Jul 2024 13:19:14 -0600 Subject: change password and username --- src/db.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/db.rs') diff --git a/src/db.rs b/src/db.rs index c655cf7..ba86b91 100644 --- a/src/db.rs +++ b/src/db.rs @@ -60,6 +60,19 @@ impl User { User { name, hashed_password, id, tokovec: base_tokens, sessions: HashMap::new() } } + fn update_name(&mut self, new_name: String) { + self.name = new_name; + } + + fn update_password(&mut self, old_password: String, new_password: String) -> Result<(), String> { + if User::hash(&old_password) == self.hashed_password { + self.hashed_password = User::hash(&new_password); + return Ok(()); + } else { + return Err("Old Password is Incorrect".into()) + } + } + fn hash(t: &String) -> String { let hashed = Sha256::digest(&t); let hashed = base16ct::lower::encode_string(&hashed); @@ -189,6 +202,17 @@ impl DB { Err("User Not Found".into()) } + pub async fn update_user(&mut self, id: UID, session: &String, name: String, old_password: String, new_password: String) -> Result<(), String> { + self.get_user_authenticated(id, session).await?; + let user = self.get_mut_user(id).await?; + user.update_name(name); + user.update_password(old_password, new_password)?; + + self.save().await?; + + Ok(()) + } + pub async fn get_user_authenticated(&self, id: UID, session: &String) -> Result<&User, String> { match self.get_user(id) { Ok(u) => { -- cgit v1.2.3