From 6ec3b25e7d50e1922270d30f02ac9c64589b0a6a Mon Sep 17 00:00:00 2001 From: phoenix Date: Mon, 20 Oct 2025 16:05:30 +0000 Subject: [PATCH] tsk-55: Register endpoint bug fix (#72) Closes #55 Reviewed-on: https://git.kundeng.us/phoenix/icarus_auth/pulls/72 Co-authored-by: phoenix Co-committed-by: phoenix --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/callers/register.rs | 12 +++++------- src/repo/mod.rs | 8 ++++---- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e697009..14f7b71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -748,7 +748,7 @@ dependencies = [ [[package]] name = "icarus_auth" -version = "0.6.1" +version = "0.6.2" dependencies = [ "argon2", "axum", diff --git a/Cargo.toml b/Cargo.toml index 12b7b27..928d972 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_auth" -version = "0.6.1" +version = "0.6.2" edition = "2024" rust-version = "1.90" diff --git a/src/callers/register.rs b/src/callers/register.rs index bd8711f..195e507 100644 --- a/src/callers/register.rs +++ b/src/callers/register.rs @@ -53,7 +53,6 @@ pub async fn register_user( Json(payload): Json, ) -> (StatusCode, Json) { let mut user = icarus_models::user::User { - id: uuid::Uuid::nil(), username: payload.username.clone(), password: payload.password.clone(), email: payload.email.clone(), @@ -62,19 +61,17 @@ pub async fn register_user( lastname: payload.lastname.clone(), status: String::from("Active"), email_verified: true, - date_created: Some(time::OffsetDateTime::now_utc()), - last_login: None, - salt_id: uuid::Uuid::nil(), + ..Default::default() }; match repo::user::exists(&pool, &user.username).await { Ok(res) => { if res { ( - StatusCode::NOT_FOUND, + StatusCode::BAD_REQUEST, Json(response::Response { message: String::from("Error"), - data: vec![user], + data: Vec::new(), }), ) } else { @@ -89,8 +86,9 @@ pub async fn register_user( user.password = hashed_password; match repo::user::insert(&pool, &user).await { - Ok(id) => { + Ok((id, date_created)) => { user.id = id; + user.date_created = date_created; ( StatusCode::CREATED, Json(response::Response { diff --git a/src/repo/mod.rs b/src/repo/mod.rs index 037ee0f..d539517 100644 --- a/src/repo/mod.rs +++ b/src/repo/mod.rs @@ -94,7 +94,7 @@ pub mod user { pub async fn insert( pool: &sqlx::PgPool, user: &icarus_models::user::User, - ) -> Result { + ) -> Result<(uuid::Uuid, std::option::Option), sqlx::Error> { let row = sqlx::query( r#" INSERT INTO "user" (username, password, email, phone, firstname, lastname, email_verified, status, salt_id) @@ -124,10 +124,10 @@ pub mod user { .map_err(|_e| sqlx::Error::RowNotFound)?, }; - if !result.id.is_nil() { - Ok(result.id) - } else { + if result.id.is_nil() && result.date_created.is_none() { Err(sqlx::Error::RowNotFound) + } else { + Ok((result.id, result.date_created)) } } }