tuwunel_api/client/admin/mas/
query_user.rs1use axum::extract::State;
2use synapse_admin_api::mas::query_user::{Request, Response};
3use tuwunel_core::Result;
4
5use super::{Mas, existing_user};
6use crate::Ruma;
7
8pub(crate) async fn query_user_route(
10 _mas: Mas,
11 State(services): State<crate::State>,
12 body: Ruma<Request>,
13) -> Result<Response> {
14 let user_id = existing_user(services, &body.localpart).await?;
15
16 let display_name = services.profile.displayname(&user_id).await.ok();
17 let avatar_url = services
18 .profile
19 .avatar_url(&user_id)
20 .await
21 .ok()
22 .map(|url| url.to_string());
23
24 let is_suspended = services.users.is_suspended(&user_id).await;
25 let is_deactivated = services.users.is_deactivated(&user_id).await?;
26
27 let mut response = Response::new(user_id);
28 response.display_name = display_name;
29 response.avatar_url = avatar_url;
30 response.is_suspended = is_suspended;
31 response.is_deactivated = is_deactivated;
32
33 Ok(response)
34}