Skip to main content

tuwunel_api/client/admin/mas/
query_user.rs

1use 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
8/// # `GET /_synapse/mas/query_user`
9pub(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}