Skip to main content

tuwunel_api/client/admin/tokens/
list.rs

1use axum::extract::State;
2use futures::StreamExt;
3use synapse_admin_api::registration_tokens::list::v1 as list;
4use tuwunel_core::Result;
5
6use super::token_response;
7use crate::{Ruma, client::admin::require_admin};
8
9/// # `GET /_synapse/admin/v1/registration_tokens`
10///
11/// The store retains only valid tokens (expired or exhausted ones are cleaned
12/// on iteration), so `valid=false` yields an empty list.
13pub(crate) async fn admin_list_tokens_route(
14	State(services): State<crate::State>,
15	body: Ruma<list::Request>,
16) -> Result<list::Response> {
17	require_admin(&services, body.sender_user()).await?;
18
19	if body.valid == Some(false) {
20		return Ok(list::Response { registration_tokens: Vec::new() });
21	}
22
23	let registration_tokens = services
24		.registration_tokens
25		.iterate_tokens()
26		.await
27		.map(|token| token_response(token.token, token.info))
28		.collect()
29		.await;
30
31	Ok(list::Response { registration_tokens })
32}