summaryrefslogtreecommitdiff
path: root/src/setup
diff options
context:
space:
mode:
Diffstat (limited to 'src/setup')
-rw-r--r--src/setup/app.rs6
-rw-r--r--src/setup/routes/post.rs12
2 files changed, 11 insertions, 7 deletions
diff --git a/src/setup/app.rs b/src/setup/app.rs
index 24e0010..d015813 100644
--- a/src/setup/app.rs
+++ b/src/setup/app.rs
@@ -4,7 +4,7 @@ use super::repo::Provider as _;
use crate::{
clock::DateTime,
event::{repo::Provider as _, Broadcaster, Event},
- login::{repo::Provider as _, Password},
+ login::{repo::Provider as _, Login, Password},
token::{repo::Provider as _, Secret},
};
@@ -23,7 +23,7 @@ impl<'a> Setup<'a> {
name: &str,
password: &Password,
created_at: &DateTime,
- ) -> Result<Secret, Error> {
+ ) -> Result<(Login, Secret), Error> {
let password_hash = password.hash()?;
let mut tx = self.db.begin().await?;
@@ -39,7 +39,7 @@ impl<'a> Setup<'a> {
self.events
.broadcast(login.events().map(Event::from).collect::<Vec<_>>());
- Ok(secret)
+ Ok((login.as_created(), secret))
}
pub async fn completed(&self) -> Result<bool, sqlx::Error> {
diff --git a/src/setup/routes/post.rs b/src/setup/routes/post.rs
index 9e6776f..34f4ed2 100644
--- a/src/setup/routes/post.rs
+++ b/src/setup/routes/post.rs
@@ -5,7 +5,11 @@ use axum::{
};
use crate::{
- app::App, clock::RequestedAt, error::Internal, login::Password, setup::app,
+ app::App,
+ clock::RequestedAt,
+ error::Internal,
+ login::{Login, Password},
+ setup::app,
token::extract::IdentityToken,
};
@@ -14,14 +18,14 @@ pub async fn handler(
RequestedAt(setup_at): RequestedAt,
identity: IdentityToken,
Json(request): Json<Request>,
-) -> Result<(IdentityToken, StatusCode), Error> {
- let secret = app
+) -> Result<(IdentityToken, Json<Login>), Error> {
+ let (login, secret) = app
.setup()
.initial(&request.name, &request.password, &setup_at)
.await
.map_err(Error)?;
let identity = identity.set(secret);
- Ok((identity, StatusCode::NO_CONTENT))
+ Ok((identity, Json(login)))
}
#[derive(serde::Deserialize)]