aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/admin/user.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-05-26 18:24:16 +0200
committermetamuffin <metamuffin@disroot.org>2025-05-26 18:24:16 +0200
commit3b15caade07e8fbe351fed9aceb3f435bf58368e (patch)
treecce91c229b78061ad36f29d76a76d67c3c737c59 /server/src/ui/admin/user.rs
parent1eeff5c03e8985d16d4f2b6283741dd82b369bd3 (diff)
downloadjellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar
jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.bz2
jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.zst
move all direct database access to logic crate
Diffstat (limited to 'server/src/ui/admin/user.rs')
-rw-r--r--server/src/ui/admin/user.rs54
1 files changed, 23 insertions, 31 deletions
diff --git a/server/src/ui/admin/user.rs b/server/src/ui/admin/user.rs
index 939ee83..27d5256 100644
--- a/server/src/ui/admin/user.rs
+++ b/server/src/ui/admin/user.rs
@@ -7,25 +7,24 @@ use crate::{
helper::{language::AcceptLanguage, A},
ui::error::MyResult,
};
-use anyhow::{anyhow, Context};
+use anyhow::Context;
use jellycommon::user::UserPermission;
use jellyimport::is_importing;
-use jellylogic::{admin::user::admin_users, session::AdminSession, Database};
+use jellylogic::{
+ admin::user::{admin_users, delete_user, get_user, update_user_perms, GrantState},
+ session::AdminSession,
+};
use jellyui::{
admin::user::{AdminUserPage, AdminUsersPage},
render_page,
scaffold::{RenderInfo, SessionInfo},
};
-use rocket::{form::Form, get, post, response::content::RawHtml, FromForm, FromFormField, State};
+use rocket::{form::Form, get, post, response::content::RawHtml, FromForm, FromFormField};
#[get("/admin/users")]
-pub fn r_admin_users(
- session: A<AdminSession>,
- database: &State<Database>,
- lang: AcceptLanguage,
-) -> MyResult<RawHtml<String>> {
+pub fn r_admin_users(session: A<AdminSession>, lang: AcceptLanguage) -> MyResult<RawHtml<String>> {
let AcceptLanguage(lang) = lang;
- let r = admin_users(database, &session.0)?;
+ let r = admin_users(&session.0)?;
Ok(RawHtml(render_page(
&AdminUsersPage {
flash: None,
@@ -45,14 +44,11 @@ pub fn r_admin_users(
#[get("/admin/user/<name>")]
pub fn r_admin_user<'a>(
session: A<AdminSession>,
- database: &State<Database>,
name: &'a str,
lang: AcceptLanguage,
) -> MyResult<RawHtml<String>> {
let AcceptLanguage(lang) = lang;
- let user = database
- .get_user(&name)?
- .ok_or(anyhow!("user does not exist"))?;
+ let user = get_user(&session.0, name)?;
Ok(RawHtml(render_page(
&AdminUserPage {
@@ -73,11 +69,11 @@ pub fn r_admin_user<'a>(
#[derive(FromForm)]
pub struct UserPermissionForm {
permission: String,
- action: GrantState,
+ action: UrlGrantState,
}
#[derive(FromFormField)]
-pub enum GrantState {
+pub enum UrlGrantState {
Grant,
Revoke,
Unset,
@@ -86,7 +82,6 @@ pub enum GrantState {
#[post("/admin/user/<name>/update_permission", data = "<form>")]
pub fn r_admin_user_permission(
session: A<AdminSession>,
- database: &State<Database>,
form: Form<UserPermissionForm>,
name: &str,
lang: AcceptLanguage,
@@ -95,18 +90,18 @@ pub fn r_admin_user_permission(
let perm = serde_json::from_str::<UserPermission>(&form.permission)
.context("parsing provided permission")?;
- database.update_user(name, |user| {
+ update_user_perms(
+ &session.0,
+ name,
+ perm,
match form.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(())
- })?;
+ UrlGrantState::Grant => GrantState::Grant,
+ UrlGrantState::Revoke => GrantState::Revoke,
+ UrlGrantState::Unset => GrantState::Unset,
+ },
+ )?;
- let user = database
- .get_user(&name)?
- .ok_or(anyhow!("user does not exist"))?;
+ let user = get_user(&session.0, name)?;
Ok(RawHtml(render_page(
&AdminUserPage {
@@ -127,15 +122,12 @@ pub fn r_admin_user_permission(
#[post("/admin/<name>/remove")]
pub fn r_admin_remove_user(
session: A<AdminSession>,
- database: &State<Database>,
name: &str,
lang: AcceptLanguage,
) -> MyResult<RawHtml<String>> {
let AcceptLanguage(lang) = lang;
- if !database.delete_user(&name)? {
- Err(anyhow!("user did not exist"))?;
- }
- let r = admin_users(database, &session.0)?;
+ delete_user(&session.0, name)?;
+ let r = admin_users(&session.0)?;
Ok(RawHtml(render_page(
&AdminUsersPage {