From 5c95f38610c61f43700b3e78dcb56c552d152c2b Mon Sep 17 00:00:00 2001 From: curly Date: Wed, 17 Jul 2024 17:23:32 -0600 Subject: del and list registration keys for admin --- src/db.rs | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'src/db.rs') diff --git a/src/db.rs b/src/db.rs index b173f2d..2e81393 100644 --- a/src/db.rs +++ b/src/db.rs @@ -298,19 +298,43 @@ impl DB { result } - pub fn add_key(&mut self, key: &String) { - self.registration_keys.push(key.clone()) + fn add_key(&mut self, key: &String) -> Result<(), String> { + if self.registration_keys.contains(key) { + Err("Key already exists".into()) + } else { + self.registration_keys.push(key.clone()); + Ok(()) + } } pub async fn new_registration_key(&mut self, id: UID, session: &String, key: &String) -> Result<(), String> { let u = self.get_user_authenticated(id, session).await?; - if u.is_admin { - self.add_key(key); + if u.is_admin() { + self.add_key(key)?; + self.save().await + } else { + Err("Not an admin".into()) + } + } + + pub async fn del_registration_key(&mut self, id: UID, session: &String, key: &String) -> Result<(), String> { + let u = self.get_user_authenticated(id, session).await?; + if u.is_admin() { + self.use_key(key).await?; self.save().await } else { Err("Not an admin".into()) } } + + pub async fn list_registration_keys(&self, id: UID, session: &String) -> Result, String> { + let u = self.get_user_authenticated(id, session).await?; + if u.is_admin() { + Ok(self.registration_keys.clone()) + } else { + Err("Not an admin".into()) + } + } pub async fn new_user(&mut self, name: String, password: String, id: UID, key: &String) -> Result { if self.use_key(key).await.is_ok() { @@ -324,7 +348,7 @@ impl DB { match self.save().await { Ok(_) => Ok(user), Err(n) => { - self.add_key(key); + self.add_key(key)?; Err(n) }, } -- cgit v1.2.3