diff options
author | curly <curly@infernal.garden> | 2024-07-17 17:23:32 -0600 |
---|---|---|
committer | curly <curly@infernal.garden> | 2024-07-17 17:23:32 -0600 |
commit | 5c95f38610c61f43700b3e78dcb56c552d152c2b (patch) | |
tree | 8f180173da663cbaebafec70659e1c3c32b71c53 /src/db.rs | |
parent | d8f80c973159813a5937395a0f53c042b0c738c2 (diff) | |
download | poko_server-5c95f38610c61f43700b3e78dcb56c552d152c2b.tar.gz poko_server-5c95f38610c61f43700b3e78dcb56c552d152c2b.tar.bz2 poko_server-5c95f38610c61f43700b3e78dcb56c552d152c2b.zip |
del and list registration keys for admin
Diffstat (limited to 'src/db.rs')
-rw-r--r-- | src/db.rs | 34 |
1 files changed, 29 insertions, 5 deletions
@@ -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<Vec<String>, 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<User, String> { 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) }, } |