From dc5dfcec079dd667aef2741e47f8f67eef2e19bb Mon Sep 17 00:00:00 2001 From: phoenix Date: Tue, 9 Jun 2026 21:40:03 -0400 Subject: [PATCH] Code cleanup --- src/callers/login.rs | 98 +++++++++++++++++++++++++++----------------- src/main.rs | 9 ++-- 2 files changed, 64 insertions(+), 43 deletions(-) diff --git a/src/callers/login.rs b/src/callers/login.rs index 7c41ef7..0d0f6db 100644 --- a/src/callers/login.rs +++ b/src/callers/login.rs @@ -1,9 +1,9 @@ -use crate::repo; use crate::hashing; +use crate::repo; use crate::token_stuff; pub mod request { - use serde::{Deserialize}; + use serde::Deserialize; #[derive(Default, Deserialize, utoipa::ToSchema)] pub struct LoginRequest { pub username: String, @@ -12,7 +12,7 @@ pub mod request { } pub mod response { - use serde::{Deserialize}; + use serde::Deserialize; #[derive(Default, Deserialize, utoipa::ToSchema)] pub struct LoginResponse { pub message: String, @@ -35,8 +35,10 @@ pub mod response { (status = 500, description = "Something went wrong", body = response::LoginResponse) ) )] -pub async fn login(axum::Extension(pool): axum::Extension, - axum::Json(payload): axum::Json) -> (axum::http::StatusCode, axum::Json) { +pub async fn user_login( + axum::Extension(pool): axum::Extension, + axum::Json(payload): axum::Json, +) -> (axum::http::StatusCode, axum::Json) { if payload.username.is_empty() || payload.password.is_empty() { let reason = if payload.username.is_empty() { String::from("Username not provided") @@ -44,43 +46,55 @@ pub async fn login(axum::Extension(pool): axum::Extension, String::from("Password not provided") }; - (axum::http::StatusCode::BAD_REQUEST, axum::Json(response::LoginResponse { - message: reason, - data: Vec::new(), - })) + ( + axum::http::StatusCode::BAD_REQUEST, + axum::Json(response::LoginResponse { + message: reason, + data: Vec::new(), + }), + ) } else { match repo::user::exists(&pool, &payload.username).await { Ok(exists) => { if !exists { println!("User does not exists"); - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(response::LoginResponse { - message: String::from("Unable to login"), - data: Vec::new(), - })); + ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(response::LoginResponse { + message: String::from("Unable to login"), + data: Vec::new(), + }), + ) } else { let user = match repo::user::get(&pool, &payload.username).await { - Ok(user) => { - user - } + Ok(user) => user, Err(_err) => { - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(response::LoginResponse { - message: String::from("Unable to login"), - data: Vec::new(), - })); + return ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(response::LoginResponse { + message: String::from("Unable to login"), + data: Vec::new(), + }), + ); } }; let hashed_password = user.password.clone(); + match hashing::verify_password(&payload.password, hashed_password) { Ok(matches) => { if matches { // Create token - let key = textsender_models::envy::environment::get_secret_key().await.value; + let key = textsender_models::envy::environment::get_secret_key() + .await + .value; let (token_literal, duration) = token_stuff::create_token(&key, &user.id).unwrap(); if token_stuff::verify_token(&key, &token_literal) { let current_time = time::OffsetDateTime::now_utc(); - let _ = repo::user::update_last_login(&pool, &user, ¤t_time).await; + let _ = + repo::user::update_last_login(&pool, &user, ¤t_time) + .await; ( axum::http::StatusCode::OK, @@ -89,40 +103,50 @@ pub async fn login(axum::Extension(pool): axum::Extension, data: vec![textsender_models::token::LoginResult { user_id: user.id, access_token: token_literal, - token_type: String::from(textsender_models::token::TOKEN_TYPE), + token_type: String::from( + textsender_models::token::TOKEN_TYPE, + ), expires_in: duration, ..Default::default() }], }), ) } else { - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(response::LoginResponse { - message: String::from("Invalid attempt"), - data: Vec::new(), - })); + ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(response::LoginResponse { + message: String::from("Invalid attempt"), + data: Vec::new(), + }), + ) } } else { - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(response::LoginResponse { + ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(response::LoginResponse { message: String::from("Invalid attempt"), data: Vec::new(), - })); + }), + ) } } - Err(err) => { - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(response::LoginResponse { + Err(err) => ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(response::LoginResponse { message: err.to_string(), data: Vec::new(), - })); - } + }), + ), } } } - Err(err) => { - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(response::LoginResponse { + Err(err) => ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(response::LoginResponse { message: err.to_string(), data: Vec::new(), - })); - } + }), + ), } } } diff --git a/src/main.rs b/src/main.rs index ee04c8b..aac0b44 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,8 +29,8 @@ mod init { use callers::common as common_callers; use callers::login as login_caller; use callers::register as register_caller; - use register_caller::response as register_responses; use login_caller::response as login_responses; + use register_caller::response as register_responses; #[derive(utoipa::OpenApi)] #[openapi( @@ -39,7 +39,7 @@ mod init { register_caller::register_user, login_caller::login, ), components(schemas(common_callers::response::TestResult, - register_responses::Response, login_responses::LoginResponse,)), + register_responses::Response, login_responses::LoginResponse)), tags( (name = "TextSender Auth API", description = "Auth API for TextSender API") ) @@ -110,10 +110,7 @@ mod init { callers::endpoints::REGISTER, post(callers::register::register_user), ) - .route( - callers::endpoints::LOGIN, - post(callers::login::login), - ) + .route(callers::endpoints::LOGIN, post(callers::login::login)) .layer(cors::configure_cors().await) }