diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-08-24 17:03:16 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-08-26 01:08:11 -0400 |
| commit | 0bbc83f09cc7517dddf16770a15f9e90815f48ba (patch) | |
| tree | 4b7ea51aab2e9255fb8832d3109b4bc8dc033f0c /src/invite | |
| parent | 218d6dbb56727721d19019c8514f5e4395596e98 (diff) | |
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.
Diffstat (limited to 'src/invite')
| -rw-r--r-- | src/invite/app.rs | 6 |
1 files changed, 4 insertions, 2 deletions
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); |
