diff --git a/src/admin/token/commands.rs b/src/admin/token/commands.rs index fb727155..4ff74a20 100644 --- a/src/admin/token/commands.rs +++ b/src/admin/token/commands.rs @@ -10,6 +10,8 @@ pub(super) async fn issue_token(&self, expires: super::TokenExpires) -> Result { None } else if let Some(max_uses) = expires.max_uses { Some(TokenExpires::AfterUses(max_uses)) + } else if expires.once { + Some(TokenExpires::AfterUses(1)) } else if let Some(max_age) = expires .max_age .as_deref() diff --git a/src/admin/token/mod.rs b/src/admin/token/mod.rs index 0e0e952e..c51c902f 100644 --- a/src/admin/token/mod.rs +++ b/src/admin/token/mod.rs @@ -44,4 +44,8 @@ pub struct TokenExpires { /// This token will never expire. #[arg(long)] immortal: bool, + + /// A shortcut for `--max-uses 1`. + #[arg(long)] + once: bool, } diff --git a/src/service/registration_tokens/data.rs b/src/service/registration_tokens/data.rs index 1d5c3a7e..82ddc4e8 100644 --- a/src/service/registration_tokens/data.rs +++ b/src/service/registration_tokens/data.rs @@ -48,7 +48,7 @@ impl DatabaseTokenInfo { impl std::fmt::Display for DatabaseTokenInfo { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Token created by {} and used {} time. ", &self.creator, self.uses)?; + write!(f, "Token created by {} and used {} times. ", &self.creator, self.uses)?; if let Some(expires) = &self.expires { write!(f, "{expires}.")?; } else {