tuwunel_api_client/account/
whoami.rs1use axum::extract::State;
2use ruma::api::client::account::whoami;
3use tuwunel_core::{Err, Result};
4
5use crate::{Ruma, utils::sender_is_guest};
6
7pub(crate) async fn whoami_route(
13 State(services): State<crate::State>,
14 body: Ruma<whoami::v3::Request>,
15) -> Result<whoami::v3::Response> {
16 let sender_user = body.sender_user();
17
18 if body.appservice_info.is_none() && !services.users.exists(sender_user).await {
20 return Err!(Request(Forbidden("User does not exist.")));
21 }
22
23 let is_guest = sender_is_guest(&services, &body).await;
24
25 Ok(whoami::v3::Response {
26 user_id: sender_user.to_owned(),
27 device_id: body.sender_device.clone(),
28 is_guest,
29 })
30}