mas_handlers/graphql/query/
viewer.rs1use async_graphql::{Context, Object};
8
9use crate::graphql::{
10 model::{Viewer, ViewerSession},
11 state::ContextExt,
12};
13
14#[derive(Default)]
15pub struct ViewerQuery;
16
17#[Object]
18impl ViewerQuery {
19 async fn viewer(&self, ctx: &Context<'_>) -> Viewer {
21 let requester = ctx.requester();
22
23 if let Some(user) = requester.user() {
24 return Viewer::user(user.clone());
25 }
26
27 Viewer::anonymous()
28 }
29
30 async fn viewer_session(&self, ctx: &Context<'_>) -> ViewerSession {
32 let requester = ctx.requester();
33
34 if let Some(session) = requester.browser_session() {
35 return ViewerSession::browser_session(session.clone());
36 }
37
38 if let Some(session) = requester.oauth2_session() {
39 return ViewerSession::oauth2_session(session.clone());
40 }
41
42 ViewerSession::anonymous()
43 }
44}