summaryrefslogtreecommitdiff
path: root/src/invite/app.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-08-24 17:03:16 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-08-26 01:08:11 -0400
commit0bbc83f09cc7517dddf16770a15f9e90815f48ba (patch)
tree4b7ea51aab2e9255fb8832d3109b4bc8dc033f0c /src/invite/app.rs
parent218d6dbb56727721d19019c8514f5e4395596e98 (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/app.rs')
-rw-r--r--src/invite/app.rs6
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);