diff options
Diffstat (limited to 'server/src/ui/admin/user.rs')
-rw-r--r-- | server/src/ui/admin/user.rs | 93 |
1 files changed, 24 insertions, 69 deletions
diff --git a/server/src/ui/admin/user.rs b/server/src/ui/admin/user.rs index e8dc332..afbe8f0 100644 --- a/server/src/ui/admin/user.rs +++ b/server/src/ui/admin/user.rs @@ -3,68 +3,42 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ -use crate::{ - helper::{language::AcceptLanguage, A}, - ui::error::MyResult, -}; +use crate::{helper::RequestInfo, ui::error::MyResult}; use anyhow::Context; use jellycommon::user::UserPermission; -use jellyimport::is_importing; -use jellylogic::{ - admin::user::{admin_users, delete_user, get_user, update_user_perms, GrantState}, - session::Session, -}; +use jellylogic::admin::user::{admin_users, delete_user, get_user, update_user_perms, GrantState}; use jellyui::{ admin::user::{AdminUserPage, AdminUsersPage}, render_page, - scaffold::{RenderInfo, SessionInfo}, }; use rocket::{form::Form, get, post, response::content::RawHtml, FromForm, FromFormField}; #[get("/admin/users")] -pub fn r_admin_users(session: A<Session>, lang: AcceptLanguage) -> MyResult<RawHtml<String>> { - session.0.assert_admin()?; - let AcceptLanguage(lang) = lang; - let r = admin_users(&session.0)?; +pub fn r_admin_users(ri: RequestInfo) -> MyResult<RawHtml<String>> { + ri.session.assert_admin()?; + let r = admin_users(&ri.session)?; Ok(RawHtml(render_page( &AdminUsersPage { flash: None, - lang: &lang, + lang: &ri.lang, users: &r.users, }, - RenderInfo { - importing: is_importing(), - session: Some(SessionInfo { - user: session.0.user, - }), - }, - lang, + ri.render_info(), ))) } #[get("/admin/user/<name>")] -pub fn r_admin_user<'a>( - session: A<Session>, - name: &'a str, - lang: AcceptLanguage, -) -> MyResult<RawHtml<String>> { - session.0.assert_admin()?; - let AcceptLanguage(lang) = lang; - let user = get_user(&session.0, name)?; +pub fn r_admin_user<'a>(ri: RequestInfo, name: &'a str) -> MyResult<RawHtml<String>> { + ri.session.assert_admin()?; + let user = get_user(&ri.session, name)?; Ok(RawHtml(render_page( &AdminUserPage { flash: None, - lang: &lang, + lang: &ri.lang, user: &user, }, - RenderInfo { - importing: is_importing(), - session: Some(SessionInfo { - user: session.0.user, - }), - }, - lang, + ri.render_info(), ))) } @@ -83,18 +57,16 @@ pub enum UrlGrantState { #[post("/admin/user/<name>/update_permission", data = "<form>")] pub fn r_admin_user_permission( - session: A<Session>, + ri: RequestInfo, form: Form<UserPermissionForm>, name: &str, - lang: AcceptLanguage, ) -> MyResult<RawHtml<String>> { - session.0.assert_admin()?; - let AcceptLanguage(lang) = lang; + ri.session.assert_admin()?; let perm = serde_json::from_str::<UserPermission>(&form.permission) .context("parsing provided permission")?; update_user_perms( - &session.0, + &ri.session, name, perm, match form.action { @@ -104,47 +76,30 @@ pub fn r_admin_user_permission( }, )?; - let user = get_user(&session.0, name)?; + let user = get_user(&ri.session, name)?; Ok(RawHtml(render_page( &AdminUserPage { flash: Some(Ok("Permissions updated".to_string())), - lang: &lang, + lang: &ri.lang, user: &user, }, - RenderInfo { - importing: is_importing(), - session: Some(SessionInfo { - user: session.0.user, - }), - }, - lang, + ri.render_info(), ))) } #[post("/admin/<name>/remove")] -pub fn r_admin_remove_user( - session: A<Session>, - name: &str, - lang: AcceptLanguage, -) -> MyResult<RawHtml<String>> { - session.0.assert_admin()?; - let AcceptLanguage(lang) = lang; - delete_user(&session.0, name)?; - let r = admin_users(&session.0)?; +pub fn r_admin_remove_user(ri: RequestInfo, name: &str) -> MyResult<RawHtml<String>> { + ri.session.assert_admin()?; + delete_user(&ri.session, name)?; + let r = admin_users(&ri.session)?; Ok(RawHtml(render_page( &AdminUsersPage { flash: Some(Ok("User removed".to_string())), - lang: &lang, + lang: &ri.lang, users: &r.users, }, - RenderInfo { - importing: is_importing(), - session: Some(SessionInfo { - user: session.0.user, - }), - }, - lang, + ri.render_info(), ))) } |