From 9ccea2ea174f12f260f35ee01c9880d4b6591cf3 Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Tue, 4 Jan 2022 23:24:31 +0100 Subject: return user from login call --- planetwars-server/src/routes/users.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'planetwars-server') diff --git a/planetwars-server/src/routes/users.rs b/planetwars-server/src/routes/users.rs index bc30b28..967710e 100644 --- a/planetwars-server/src/routes/users.rs +++ b/planetwars-server/src/routes/users.rs @@ -5,6 +5,7 @@ use axum::extract::{FromRequest, RequestParts, TypedHeader}; use axum::headers::authorization::Bearer; use axum::headers::Authorization; use axum::http::StatusCode; +use axum::response::{Headers, IntoResponse, Response}; use axum::{async_trait, Json}; use serde::{Deserialize, Serialize}; @@ -70,10 +71,7 @@ pub struct LoginParams { pub password: String, } -pub async fn login( - conn: DatabaseConnection, - params: Json, -) -> Result { +pub async fn login(conn: DatabaseConnection, params: Json) -> Response { let credentials = Credentials { username: ¶ms.username, password: ¶ms.password, @@ -82,10 +80,13 @@ pub async fn login( let authenticated = users::authenticate_user(&credentials, &conn); match authenticated { - None => Err(StatusCode::FORBIDDEN), + None => StatusCode::FORBIDDEN.into_response(), Some(user) => { let session = sessions::create_session(&user, &conn); - Ok(session.token) + let user_data: UserData = user.into(); + let headers = Headers(vec![("Token", &session.token)]); + + (headers, Json(user_data)).into_response() } } } -- cgit v1.2.3