diff options
Diffstat (limited to 'server/src/request_info.rs')
| -rw-r--r-- | server/src/request_info.rs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/server/src/request_info.rs b/server/src/request_info.rs index 442c7fb..0adfe96 100644 --- a/server/src/request_info.rs +++ b/server/src/request_info.rs @@ -10,10 +10,7 @@ use crate::{ ui::error::{MyError, MyResult}, }; use anyhow::anyhow; -use jellycommon::{ - USER_ADMIN, - jellyobject::{Object, ObjectBuffer}, -}; +use jellycommon::{USER_ADMIN, User, jellyobject::Object}; use jellyui::{Page, RenderInfo, Scaffold}; use rocket::{ Request, async_trait, @@ -27,7 +24,7 @@ pub struct RequestInfo<'a> { pub lang: &'a str, pub accept: Accept, pub debug: &'a str, - pub user: Option<ObjectBuffer>, + pub user: Option<Box<User>>, pub state: Arc<State>, pub flash: Option<FlashMessage<'a>>, } @@ -59,13 +56,12 @@ impl<'a> RequestInfo<'a> { flash: FlashMessage::from_request(request).await.succeeded(), }) } - pub fn require_user(&'a self) -> MyResult<Object<'a>> { + pub fn require_user(&'a self) -> MyResult<&'a Object> { self.user - .as_ref() - .map(|u| u.as_object()) + .as_deref() .ok_or(MyError(anyhow!("user required"))) } - pub fn require_admin(&'a self) -> MyResult<Object<'a>> { + pub fn require_admin(&'a self) -> MyResult<&'a Object> { let user = self.require_user()?; if !user.has(USER_ADMIN.0) { Err(anyhow!("admin required"))? @@ -76,7 +72,7 @@ impl<'a> RequestInfo<'a> { RenderInfo { lang: self.lang, status_message: None, - user: self.user.as_ref().map(|u| u.as_object()), + user: self.user.as_deref(), config: &self.state.config.ui, message: self.flash.as_ref().map(|f| (f.kind(), f.message())), } @@ -129,7 +125,7 @@ fn accept_language<'a>(request: &'a Request<'_>) -> &'a str { .unwrap_or("en") } -fn user_from_request(state: &State, req: &Request<'_>) -> Result<Option<ObjectBuffer>, MyError> { +fn user_from_request(state: &State, req: &Request<'_>) -> Result<Option<Box<User>>, MyError> { let Some(token) = req .query_value("session") .map(|e| e.unwrap()) |