From 0bbc83f09cc7517dddf16770a15f9e90815f48ba Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Sun, 24 Aug 2025 17:03:16 -0400 Subject: Generate tokens in memory and then store them. This is the leading edge of a larger storage refactoring, where repo types stop doing things like generating secrets or deciding whether to carry out an operation. To make this work, there is now a `Token` type that holds the complete state of a token, in memory. --- src/invite/app.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/invite/app.rs') diff --git a/src/invite/app.rs b/src/invite/app.rs index 1c85562..6e235b2 100644 --- a/src/invite/app.rs +++ b/src/invite/app.rs @@ -8,7 +8,7 @@ use crate::{ event::Broadcaster, name::Name, password::Password, - token::{Secret, repo::Provider as _}, + token::{Secret, Token, repo::Provider as _}, user::{ User, create::{self, Create}, @@ -71,7 +71,9 @@ impl<'a> Invites<'a> { .store(&mut tx) .await .duplicate(|| AcceptError::DuplicateLogin(name.clone()))?; - let secret = tx.tokens().issue(stored.user(), accepted_at).await?; + let user = stored.user().as_created(); + let (token, secret) = Token::generate(&user, accepted_at); + tx.tokens().create(&token, &secret).await?; tx.commit().await?; stored.publish(self.events); -- cgit v1.2.3