new laptop setup

This commit is contained in:
2022-12-24 16:34:17 +01:00
parent 5b95621d04
commit 31b47e892d
55 changed files with 789 additions and 5 deletions
+44
View File
@@ -0,0 +1,44 @@
use crate::database::establish_connection;
use crate::diesel;
use crate::json_serialization::login::Login;
use crate::models::user::user::User;
use crate::schema::users;
use crate::{auth::jwt::JwtToken, schema::users::username};
use actix_web::{web, HttpResponse};
use diesel::prelude::*;
pub async fn login(credentials: web::Json<Login>) -> HttpResponse {
let username_cred: String = credentials.username.clone();
let password: String = credentials.password.clone();
let mut connection = establish_connection();
let users = users::table
.filter(username.eq(username_cred.as_str()))
.load::<User>(&mut connection)
.unwrap();
if users.is_empty() {
return HttpResponse::NotFound().await.unwrap();
} else if users.len() > 1 {
log::error!(
"multiple user have the usernam: {}",
credentials.username.clone()
);
return HttpResponse::Conflict().await.unwrap();
}
let user: &User = &users[0];
match user.clone().verify(password) {
true => {
log::info!("verified password successfully");
let token: String = JwtToken::encode(user.clone().id);
HttpResponse::Ok()
.insert_header(("token", token))
.await
.unwrap()
}
false => HttpResponse::Unauthorized().await.unwrap(),
}
}
+3
View File
@@ -0,0 +1,3 @@
pub async fn logout() -> String {
format!("logout view")
}
+23
View File
@@ -0,0 +1,23 @@
use actix_web::web;
use actix_web::web::ServiceConfig;
use super::path::Path;
mod login;
mod logout;
pub fn auth_factory(app: &mut ServiceConfig) {
let base_path: Path = Path {
prefix: String::from("/auth"),
backend: true,
};
app.route(
&base_path.define(String::from("/login")),
web::post().to(login::login),
);
app.route(
&base_path.define(String::from("/logout")),
web::post().to(logout::logout),
);
}