tuwunel_api/client/admin/users/
memberships.rs1use axum::extract::State;
2use futures::StreamExt;
3use synapse_admin_api::users::memberships::v1 as memberships;
4use tuwunel_core::Result;
5
6use crate::{Ruma, client::admin::require_admin};
7
8pub(crate) async fn admin_memberships_route(
13 State(services): State<crate::State>,
14 body: Ruma<memberships::Request>,
15) -> Result<memberships::Response> {
16 require_admin(&services, body.sender_user()).await?;
17
18 let map = services
19 .state_cache
20 .user_memberships(&body.user_id, None)
21 .map(|(membership, room_id)| (room_id.to_owned(), membership))
22 .collect()
23 .await;
24
25 Ok(memberships::Response::new(map))
26}