Skip to main content

tuwunel_admin/token/
issue.rs

1use tuwunel_core::{Result, utils};
2use tuwunel_service::registration_tokens::TokenExpires;
3
4use crate::admin_command;
5
6#[admin_command]
7pub(super) async fn issue(
8	&self,
9	max_uses: Option<u64>,
10	max_age: Option<String>,
11	once: bool,
12) -> Result {
13	let expires = TokenExpires {
14		max_uses: max_uses.or_else(|| once.then_some(1)),
15		max_age: max_age
16			.map(|max_age| {
17				let duration = utils::time::parse_duration(&max_age)?;
18				utils::time::timepoint_from_now(duration)
19			})
20			.transpose()?,
21	};
22
23	let (token, info) = self
24		.services
25		.registration_tokens
26		.issue_token(expires)
27		.await?;
28
29	write!(self, "New registration token issued: `{token}` - {info}").await
30}