diff options
Diffstat (limited to 'src/db.rs')
-rw-r--r-- | src/db.rs | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -66,6 +66,10 @@ impl User { User { name, is_admin: admin, hashed_password, id, tokovec: base_tokens, sessions: HashMap::new() } } + pub fn is_admin(&self) -> bool { + self.is_admin + } + fn update_name(&mut self, new_name: String) { self.name = new_name; } @@ -298,6 +302,16 @@ impl DB { self.registration_keys.push(key.clone()) } + 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); + self.save().await + } 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() { let mut is_admin = false; |