tuwunel_api_admin/users/
reset_password.rs1use axum::extract::State;
2use synapse_admin_api::users::reset_password::v1 as reset_password;
3use tuwunel_core::{Err, Result};
4
5use crate::{Ruma, refuse_server_user, require_admin};
6
7pub(crate) async fn admin_reset_password_route(
9 State(services): State<crate::State>,
10 body: Ruma<reset_password::Request>,
11) -> Result<reset_password::Response> {
12 require_admin(&services, body.sender_user()).await?;
13 refuse_server_user(services, &body.user_id)?;
14
15 if !services.users.exists(&body.user_id).await {
16 return Err!(Request(NotFound("User not found")));
17 }
18
19 services
20 .users
21 .set_password(&body.user_id, Some(&body.new_password))
22 .await?;
23
24 if body.logout_devices {
25 services
26 .users
27 .remove_devices(&body.user_id, None)
28 .await;
29 }
30
31 Ok(reset_password::Response::new())
32}