diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-16 17:50:57 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-16 17:50:57 +0100 |
| commit | be4af57d75cc1e233b4714b18198fb7bde49464d (patch) | |
| tree | 6e529e748fc1d5c212dcf8033c8158630ca4f4d6 /server/src/request_info.rs | |
| parent | bb1822e3e68fe6f699102bfc1659731bdbac1a40 (diff) | |
| download | jellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar jellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar.bz2 jellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar.zst | |
refactor ui responder; add admin import pages
Diffstat (limited to 'server/src/request_info.rs')
| -rw-r--r-- | server/src/request_info.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/server/src/request_info.rs b/server/src/request_info.rs index 0f2fd3a..6ed311e 100644 --- a/server/src/request_info.rs +++ b/server/src/request_info.rs @@ -10,7 +10,10 @@ use crate::{ ui::error::{MyError, MyResult}, }; use anyhow::anyhow; -use jellycommon::jellyobject::{Object, ObjectBuffer}; +use jellycommon::{ + USER_ADMIN, + jellyobject::{Object, ObjectBuffer}, +}; use jellyui::RenderInfo; use rocket::{ Request, async_trait, @@ -22,6 +25,7 @@ use std::sync::Arc; pub struct RequestInfo<'a> { pub lang: &'a str, pub accept: Accept, + pub debug: bool, pub user: Option<ObjectBuffer>, pub state: Arc<State>, } @@ -45,6 +49,7 @@ impl<'a> RequestInfo<'a> { accept: Accept::from_request_ut(request), user: user_from_request(state, request)?, state: state.clone(), + debug: request.query_value::<&str>("debug").is_some(), }) } pub fn require_user(&'a self) -> MyResult<Object<'a>> { @@ -53,6 +58,13 @@ impl<'a> RequestInfo<'a> { .map(|u| u.as_object()) .ok_or(MyError(anyhow!("user required"))) } + pub fn require_admin(&'a self) -> MyResult<Object<'a>> { + let user = self.require_user()?; + if !user.has(USER_ADMIN.0) { + Err(anyhow!("admin required"))? + } + Ok(user) + } pub fn render_info(&'a self) -> RenderInfo<'a> { RenderInfo { lang: self.lang, |