Skip to main content

tuwunel_api/client/admin/users/
get_details.rs

1use axum::extract::State;
2use synapse_admin_api::users::get_details::v2 as get_details;
3use tuwunel_core::{Err, Result};
4
5use super::user_details;
6use crate::{Ruma, client::admin::require_admin};
7
8/// # `GET /_synapse/admin/v2/users/{user_id}`
9pub(crate) async fn admin_get_details_route(
10	State(services): State<crate::State>,
11	body: Ruma<get_details::Request>,
12) -> Result<get_details::Response> {
13	require_admin(&services, body.sender_user()).await?;
14
15	if !services.globals.user_is_local(&body.user_id) {
16		return Err!(Request(InvalidParam("Can only look up local users")));
17	}
18
19	if !services.users.exists(&body.user_id).await {
20		return Err!(Request(NotFound("User not found")));
21	}
22
23	let details = user_details(services, &body.user_id).await;
24
25	Ok(get_details::Response::new(details))
26}