From ab23761e090b8ab6311a360eada7131f6663a3bf Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Thu, 1 Sep 2022 18:45:04 +0200 Subject: Fork from m6-ie project --- src/routes/auth.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/routes/auth.rs (limited to 'src/routes/auth.rs') diff --git a/src/routes/auth.rs b/src/routes/auth.rs new file mode 100644 index 0000000..37c41b2 --- /dev/null +++ b/src/routes/auth.rs @@ -0,0 +1,25 @@ +use crate::errors::AppError; +use crate::models::{ + auth::{AuthBody, Claims}, + user::{User, UserCreate}, +}; +use axum::{routing::post, Json, Router}; + +/// Create routes for `/v1/auth/` namespace +pub fn create_route() -> Router { + Router::new().route("/login", post(make_login)) +} + +/// Make login. Check if a user with the email and password passed in request body exists into the +/// database +async fn make_login(Json(payload): Json) -> Result, AppError> { + let user = User::new(payload.email, payload.password); + match User::find(user).await { + Ok(user) => { + let claims = Claims::new(user.id); + let token = claims.get_token()?; + Ok(Json(AuthBody::new(token))) + } + Err(_) => Err(AppError::NotFound), + } +} -- cgit v1.2.3-71-g8e6c