tuwunel_api/client/admin/users/
lookup_threepid.rs1use axum::extract::State;
2use synapse_admin_api::users::lookup_threepid::v1 as lookup_threepid;
3use tuwunel_core::{Err, Result, err};
4use tuwunel_service::threepid::canonicalize_email;
5
6use crate::{Ruma, client::admin::require_admin};
7
8pub(crate) async fn admin_lookup_threepid_route(
13 State(services): State<crate::State>,
14 body: Ruma<lookup_threepid::Request>,
15) -> Result<lookup_threepid::Response> {
16 require_admin(&services, body.sender_user()).await?;
17
18 if !body.medium.eq_ignore_ascii_case("email") {
19 return Err!(Request(NotFound("User not found")));
20 }
21
22 let email = canonicalize_email(&body.address)
23 .map_err(|_| err!(Request(NotFound("User not found"))))?;
24
25 let user_id = services
26 .threepid
27 .user_id_for_email(&email)
28 .await?
29 .ok_or_else(|| err!(Request(NotFound("User not found"))))?;
30
31 Ok(lookup_threepid::Response::new(user_id))
32}