diff options
Diffstat (limited to 'logic/src/admin')
| -rw-r--r-- | logic/src/admin/mod.rs | 48 | ||||
| -rw-r--r-- | logic/src/admin/user.rs | 51 |
2 files changed, 0 insertions, 99 deletions
diff --git a/logic/src/admin/mod.rs b/logic/src/admin/mod.rs deleted file mode 100644 index 76599d5..0000000 --- a/logic/src/admin/mod.rs +++ /dev/null @@ -1,48 +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> -*/ - -pub mod log; -pub mod user; - -use crate::{DATABASE, session::Session}; -use anyhow::{Result, anyhow}; -use jellyimport::{import_wrap, reporting::IMPORT_ERRORS}; -use rand::Rng; -use tokio::{spawn, task::spawn_blocking}; - -pub async fn get_import_errors(_session: &Session) -> Vec<String> { - IMPORT_ERRORS.read().await.to_owned() -} -pub fn list_invites(session: &Session) -> Result<Vec<String>> { - session.assert_admin()?; - DATABASE.list_invites() -} - -pub fn create_invite(session: &Session) -> Result<String> { - session.assert_admin()?; - let i = format!("{}", rand::rng().random::<u128>()); - DATABASE.create_invite(&i)?; - Ok(i) -} -pub fn delete_invite(session: &Session, invite: &str) -> Result<()> { - session.assert_admin()?; - if !DATABASE.delete_invite(invite)? { - Err(anyhow!("invite does not exist"))?; - }; - Ok(()) -} -pub async fn update_search_index(session: &Session) -> Result<()> { - session.assert_admin()?; - spawn_blocking(move || DATABASE.search_create_index()).await? -} -pub async fn do_import(session: &Session, incremental: bool) -> Result<()> { - session.assert_admin()?; - if !incremental { - DATABASE.clear_nodes()?; - } - spawn(import_wrap((*DATABASE).clone(), incremental)); - Ok(()) -} 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(()) - }) -} |