Register works, login almost

This commit is contained in:
Marko Korhonen 2020-04-09 11:52:31 +03:00
parent 12b865bf17
commit c85bb0ef72
No known key found for this signature in database
GPG key ID: 911B85FBC6003FE5
6 changed files with 79 additions and 41 deletions

View file

@ -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))
}

View file

@ -1,5 +1,4 @@
pub mod authentication;
pub mod register;
use crate::db_connection::{DbPool, MyPooledConnection};
use actix_web::{web, HttpResponse};

View file

@ -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()))
}