Basic create user account

This commit is contained in:
2023-05-24 16:19:46 +02:00
parent 9912428fd6
commit 0bfdc305b1
15 changed files with 224 additions and 8 deletions

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