Register works, login almost
This commit is contained in:
parent
12b865bf17
commit
c85bb0ef72
6 changed files with 79 additions and 41 deletions
|
@ -1 +1,49 @@
|
|||
pub fn login() {}
|
||||
use crate::{
|
||||
db_connection::DbPool,
|
||||
errors::CustomError,
|
||||
handlers::pool_handler,
|
||||
models::user::{AuthUser, RegisterUser, User},
|
||||
utils::jwt::*,
|
||||
};
|
||||
|
||||
use actix_identity::Identity;
|
||||
use actix_web::{post, web, HttpResponse, Responder};
|
||||
|
||||
#[post("/auth/register")]
|
||||
pub async fn register(
|
||||
new_user: web::Json<RegisterUser>,
|
||||
pool: web::Data<DbPool>,
|
||||
) -> impl Responder {
|
||||
let connection = pool_handler(pool)?;
|
||||
let register_user = new_user
|
||||
.into_inner()
|
||||
.validation()
|
||||
.map_err(|e| HttpResponse::InternalServerError().json(e.to_string()))?;
|
||||
|
||||
User::create(register_user, &connection)
|
||||
.map(|user| HttpResponse::Ok().json(user))
|
||||
.map_err(|e| HttpResponse::InternalServerError().json(e.to_string()))
|
||||
}
|
||||
|
||||
#[post("auth/login")]
|
||||
pub async fn login(
|
||||
id: Identity,
|
||||
auth_user: web::Json<AuthUser>,
|
||||
pool: web::Data<DbPool>,
|
||||
) -> impl Responder {
|
||||
let connection = pool_handler(pool)?;
|
||||
|
||||
let user = auth_user.login(&connection).map_err(|e| match e {
|
||||
CustomError::DBError(diesel::result::Error::NotFound) => {
|
||||
HttpResponse::NotFound().json(e.to_string())
|
||||
}
|
||||
_ => HttpResponse::InternalServerError().json(e.to_string()),
|
||||
})?;
|
||||
|
||||
let token = new_token(user.id, &user.username, &user.admin).map_err(|e| match e {
|
||||
_ => HttpResponse::InternalServerError().finish(),
|
||||
})?;
|
||||
|
||||
id.remember(token);
|
||||
Ok(HttpResponse::Ok().json(token))
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
pub mod authentication;
|
||||
pub mod register;
|
||||
|
||||
use crate::db_connection::{DbPool, MyPooledConnection};
|
||||
use actix_web::{web, HttpResponse};
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
use crate::db_connection::DbPool;
|
||||
use crate::handlers::pool_handler;
|
||||
use crate::models::user::{RegisterUser, User};
|
||||
use actix_web::{web, HttpResponse};
|
||||
|
||||
pub fn register(
|
||||
new_user: web::Json<RegisterUser>,
|
||||
pool: web::Data<DbPool>,
|
||||
) -> Result<HttpResponse, HttpResponse> {
|
||||
let my_pool = pool_handler(pool)?;
|
||||
let register_user = new_user
|
||||
.into_inner()
|
||||
.validation()
|
||||
.map_err(|e| HttpResponse::InternalServerError().json(e.to_string()))?;
|
||||
|
||||
User::create(register_user, &my_pool)
|
||||
.map(|user| HttpResponse::Ok().json(user))
|
||||
.map_err(|e| HttpResponse::InternalServerError().json(e.to_string()))
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue