summaryrefslogtreecommitdiff
path: root/src/invite
diff options
context:
space:
mode:
Diffstat (limited to 'src/invite')
-rw-r--r--src/invite/app.rs4
-rw-r--r--src/invite/routes/invite/post.rs8
2 files changed, 6 insertions, 6 deletions
diff --git a/src/invite/app.rs b/src/invite/app.rs
index 4162470..ee7f74f 100644
--- a/src/invite/app.rs
+++ b/src/invite/app.rs
@@ -45,7 +45,7 @@ impl<'a> Invites<'a> {
name: &str,
password: &Password,
accepted_at: &DateTime,
- ) -> Result<Secret, AcceptError> {
+ ) -> Result<(Login, Secret), AcceptError> {
let mut tx = self.db.begin().await?;
let invite = tx
.invites()
@@ -72,7 +72,7 @@ impl<'a> Invites<'a> {
let secret = tx.tokens().issue(&login, accepted_at).await?;
tx.commit().await?;
- Ok(secret)
+ Ok((login.as_created(), secret))
}
pub async fn expire(&self, relative_to: &DateTime) -> Result<(), sqlx::Error> {
diff --git a/src/invite/routes/invite/post.rs b/src/invite/routes/invite/post.rs
index 12c2e21..c072929 100644
--- a/src/invite/routes/invite/post.rs
+++ b/src/invite/routes/invite/post.rs
@@ -9,7 +9,7 @@ use crate::{
clock::RequestedAt,
error::{Internal, NotFound},
invite::app,
- login::Password,
+ login::{Login, Password},
token::extract::IdentityToken,
};
@@ -19,14 +19,14 @@ pub async fn handler(
identity: IdentityToken,
Path(invite): Path<super::PathInfo>,
Json(request): Json<Request>,
-) -> Result<(IdentityToken, StatusCode), Error> {
- let secret = app
+) -> Result<(IdentityToken, Json<Login>), Error> {
+ let (login, secret) = app
.invites()
.accept(&invite, &request.name, &request.password, &accepted_at)
.await
.map_err(Error)?;
let identity = identity.set(secret);
- Ok((identity, StatusCode::NO_CONTENT))
+ Ok((identity, Json(login)))
}
#[derive(serde::Deserialize)]