diff --git a/src/callers/register.rs b/src/callers/register.rs index 195e507..7b48ed8 100644 --- a/src/callers/register.rs +++ b/src/callers/register.rs @@ -52,67 +52,74 @@ pub async fn register_user( axum::Extension(pool): axum::Extension, Json(payload): Json, ) -> (StatusCode, Json) { - let mut user = icarus_models::user::User { - username: payload.username.clone(), - password: payload.password.clone(), - email: payload.email.clone(), - phone: payload.phone.clone(), - firstname: payload.firstname.clone(), - lastname: payload.lastname.clone(), - status: String::from("Active"), - email_verified: true, - ..Default::default() - }; + if is_registration_enabled() { + let mut user = icarus_models::user::User { + username: payload.username.clone(), + password: payload.password.clone(), + email: payload.email.clone(), + phone: payload.phone.clone(), + firstname: payload.firstname.clone(), + lastname: payload.lastname.clone(), + status: String::from("Active"), + email_verified: true, + ..Default::default() + }; - match repo::user::exists(&pool, &user.username).await { - Ok(res) => { - if res { - ( - StatusCode::BAD_REQUEST, - Json(response::Response { - message: String::from("Error"), - data: Vec::new(), - }), - ) - } else { - let salt_string = hashing::generate_salt().unwrap(); - let mut salt = icarus_models::user::salt::Salt::default(); - let generated_salt = salt_string; - salt.salt = generated_salt.to_string(); - salt.id = repo::salt::insert(&pool, &salt).await.unwrap(); - user.salt_id = salt.id; - let hashed_password = - hashing::hash_password(&user.password, &generated_salt).unwrap(); - user.password = hashed_password; - - match repo::user::insert(&pool, &user).await { - Ok((id, date_created)) => { - user.id = id; - user.date_created = date_created; - ( - StatusCode::CREATED, - Json(response::Response { - message: String::from("User created"), - data: vec![user], - }), - ) - } - Err(err) => ( + match repo::user::exists(&pool, &user.username).await { + Ok(res) => { + if res { + ( StatusCode::BAD_REQUEST, Json(response::Response { - message: err.to_string(), - data: vec![user], + message: String::from("Error"), + data: Vec::new(), }), - ), + ) + } else { + let salt_string = hashing::generate_salt().unwrap(); + let mut salt = icarus_models::user::salt::Salt::default(); + let generated_salt = salt_string; + salt.salt = generated_salt.to_string(); + salt.id = repo::salt::insert(&pool, &salt).await.unwrap(); + user.salt_id = salt.id; + let hashed_password = + hashing::hash_password(&user.password, &generated_salt).unwrap(); + user.password = hashed_password; + + match repo::user::insert(&pool, &user).await { + Ok((id, date_created)) => { + user.id = id; + user.date_created = date_created; + ( + StatusCode::CREATED, + Json(response::Response { + message: String::from("User created"), + data: vec![user], + }), + ) + } + Err(err) => ( + StatusCode::BAD_REQUEST, + Json(response::Response { + message: err.to_string(), + data: vec![user], + }), + ), + } } } + Err(err) => ( + StatusCode::BAD_REQUEST, + Json(response::Response { + message: err.to_string(), + data: vec![user], + }), + ), } - Err(err) => ( - StatusCode::BAD_REQUEST, - Json(response::Response { - message: err.to_string(), - data: vec![user], - }), - ), + } else { + (axum::http::StatusCode::NOT_ACCEPTABLE, Json(response::Response{ + message: String::from("Registration is not enabled"), + data:: Vec::new() + })) } }