tuwunel_admin/token/
issue.rs1use 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}