Basic create user account
This commit is contained in:
43
geneit_backend/src/controllers/auth_controller.rs
Normal file
43
geneit_backend/src/controllers/auth_controller.rs
Normal file
@ -0,0 +1,43 @@
|
||||
use crate::constants::StaticConstraints;
|
||||
use crate::services::users_service;
|
||||
use actix_remote_ip::RemoteIP;
|
||||
use actix_web::error::ErrorInternalServerError;
|
||||
use actix_web::{web, HttpResponse};
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
pub struct CreateAccountBody {
|
||||
name: String,
|
||||
email: String,
|
||||
}
|
||||
|
||||
/// Create a new account
|
||||
pub async fn create_account(
|
||||
_remote_ip: RemoteIP,
|
||||
req: web::Json<CreateAccountBody>,
|
||||
) -> actix_web::Result<HttpResponse> {
|
||||
// TODO : rate limiting
|
||||
|
||||
// TODO : check if email is valid
|
||||
|
||||
// Check parameters
|
||||
let constraints = StaticConstraints::default();
|
||||
if !constraints.user_name_len.validate(&req.name) || !constraints.mail_len.validate(&req.email)
|
||||
{
|
||||
return Ok(HttpResponse::BadRequest().json("Size constraints were not respected!"));
|
||||
}
|
||||
|
||||
// TODO : check the mail address
|
||||
|
||||
// Create the account
|
||||
let user_id = users_service::create_account(&req.name, &req.email)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
log::error!("Failed to create user! {e}");
|
||||
ErrorInternalServerError(e)
|
||||
})?;
|
||||
|
||||
// TODO : trigger reset password (send mail)
|
||||
|
||||
// Account successfully created
|
||||
Ok(HttpResponse::Created().finish())
|
||||
}
|
Reference in New Issue
Block a user