diff options
Diffstat (limited to 'logic/src/admin/user.rs')
| -rw-r--r-- | logic/src/admin/user.rs | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/logic/src/admin/user.rs b/logic/src/admin/user.rs deleted file mode 100644 index a5f1b24..0000000 --- a/logic/src/admin/user.rs +++ /dev/null @@ -1,51 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2026 metamuffin <metamuffin.org> -*/ - -use crate::{DATABASE, session::Session}; -use anyhow::{Result, anyhow}; - -pub fn admin_users(session: &Session) -> Result<ApiAdminUsersResponse> { - session.assert_admin()?; - // TODO dont return useless info like passwords - Ok(ApiAdminUsersResponse { - users: DATABASE.list_users()?, - }) -} -pub fn get_user(session: &Session, username: &str) -> Result<User> { - session.assert_admin()?; - DATABASE - .get_user(username)? - .ok_or(anyhow!("user not found")) -} -pub fn delete_user(session: &Session, username: &str) -> Result<()> { - session.assert_admin()?; - if !DATABASE.delete_user(username)? { - Err(anyhow!("user did not exist"))?; - } - Ok(()) -} - -pub enum GrantState { - Grant, - Revoke, - Unset, -} -pub fn update_user_perms( - session: &Session, - username: &str, - perm: UserPermission, - action: GrantState, -) -> Result<()> { - session.assert_admin()?; - DATABASE.update_user(username, |user| { - match action { - GrantState::Grant => drop(user.permissions.0.insert(perm.clone(), true)), - GrantState::Revoke => drop(user.permissions.0.insert(perm.clone(), false)), - GrantState::Unset => drop(user.permissions.0.remove(&perm)), - } - Ok(()) - }) -} |