diff --git a/src/callers/register.rs b/src/callers/register.rs index 7b48ed8..2f58e06 100644 --- a/src/callers/register.rs +++ b/src/callers/register.rs @@ -52,7 +52,20 @@ pub async fn register_user( axum::Extension(pool): axum::Extension, Json(payload): Json, ) -> (StatusCode, Json) { - if is_registration_enabled() { + let registration_enabled = match is_registration_enabled().await { + Ok(value) => { + value + } + Err(err) => { + eprintln!("Error: {err:?}"); + return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, Json(response::Response{ + message: String::from("Registration check failed"), + data: Vec::new() + })); + } + }; + + if registration_enabled { let mut user = icarus_models::user::User { username: payload.username.clone(), password: payload.password.clone(), @@ -119,7 +132,22 @@ pub async fn register_user( } else { (axum::http::StatusCode::NOT_ACCEPTABLE, Json(response::Response{ message: String::from("Registration is not enabled"), - data:: Vec::new() + data: Vec::new() })) } } + +/// Checks to see if registration is enabled +async fn is_registration_enabled() -> Result { + let key = String::from("ENABLE_REGISTRATION"); + let var = icarus_envy::environment::get_env(&key).await; + let parsed_value = var.value.to_uppercase(); + + if parsed_value == "TRUE" { + Ok(true) + } else if parsed_value == "FALSE" { + Ok(false) + } else { + Err(std::io::Error::other("Could not determine value of ENABLE_REGISTRATION")) + } +}