aboutsummaryrefslogtreecommitdiff
path: root/src/db.rs
diff options
context:
space:
mode:
authorcurly <curly@infernal.garden>2024-07-16 13:19:14 -0600
committercurly <curly@infernal.garden>2024-07-16 13:19:14 -0600
commit12c1da413d09d48ce85bb46d0629166ce986b5d6 (patch)
tree6778187a442e9bd49f8406f24eac1e9653f024b5 /src/db.rs
parentd109b8e2ed9caa1ad362ec5ee268a2a98c22981e (diff)
downloadpoko_server-12c1da413d09d48ce85bb46d0629166ce986b5d6.tar.gz
poko_server-12c1da413d09d48ce85bb46d0629166ce986b5d6.tar.bz2
poko_server-12c1da413d09d48ce85bb46d0629166ce986b5d6.zip
change password and username
Diffstat (limited to 'src/db.rs')
-rw-r--r--src/db.rs24
1 files changed, 24 insertions, 0 deletions
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) => {