Skip to main content

tuwunel_api/client/membership/
unban.rs

1use axum::extract::State;
2use futures::FutureExt;
3use ruma::api::client::membership::unban_user;
4use tuwunel_core::Result;
5
6use crate::Ruma;
7
8/// # `POST /_matrix/client/r0/rooms/{roomId}/unban`
9///
10/// Tries to send an unban event into the room.
11pub(crate) async fn unban_user_route(
12	State(services): State<crate::State>,
13	body: Ruma<unban_user::v3::Request>,
14) -> Result<unban_user::v3::Response> {
15	let state_lock = services.state.mutex.lock(&body.room_id).await;
16
17	services
18		.membership
19		.unban(
20			&body.room_id,
21			&body.user_id,
22			body.reason.as_ref(),
23			body.sender_user(),
24			&state_lock,
25		)
26		.boxed()
27		.await?;
28
29	drop(state_lock);
30
31	Ok(unban_user::v3::Response::new())
32}