Register service user endpoint #5
@@ -18,6 +18,26 @@ pub mod request {
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub lastname: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Default, Deserialize, Serialize, utoipa::ToSchema)]
|
||||
pub struct RegisterServiceUserRequest {
|
||||
pub username: String,
|
||||
pub passphrase: String,
|
||||
}
|
||||
|
||||
impl RegisterServiceUserRequest {
|
||||
pub fn is_empty(&self) -> (bool, Option<String>) {
|
||||
if self.username.is_empty() && self.passphrase.is_empty() {
|
||||
(true, Some(String::from("Username and Passphrase are empty")))
|
||||
} else if self.username.is_empty() {
|
||||
(true, Some(String::from("Username is empty")))
|
||||
} else if self.passphrase.is_empty() {
|
||||
(true, Some(String::from("Passphrase is empty")))
|
||||
} else {
|
||||
(false, None)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub mod response {
|
||||
@@ -28,6 +48,12 @@ pub mod response {
|
||||
pub message: String,
|
||||
pub data: Vec<textsender_models::user::User>,
|
||||
}
|
||||
|
||||
#[derive(Default, Deserialize, Serialize, utoipa::ToSchema)]
|
||||
pub struct RegisterServiceUserResponse {
|
||||
pub message: String,
|
||||
pub data: Vec<textsender_models::user::ServiceUser>
|
||||
}
|
||||
}
|
||||
|
||||
/// Endpoint to register a user
|
||||
@@ -160,3 +186,27 @@ async fn is_registration_enabled() -> Result<bool, std::io::Error> {
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
/// Endpoint to register a service user
|
||||
pub async fn register_service_user(
|
||||
axum::Extension(pool): axum::Extension<sqlx::PgPool>,
|
||||
Json(payload): Json<request::RegisterServiceUserRequest>,
|
||||
) -> (axum::http::StatusCode, axum::Json<response::RegisterServiceUserResponse>) {
|
||||
let mut resp = response::RegisterServiceUserResponse {
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let (res, msg) = payload.is_empty();
|
||||
if res {
|
||||
resp.message = msg.unwrap();
|
||||
(axum::http::StatusCode::BAD_REQUEST, axum::Json(resp))
|
||||
} else {
|
||||
match repo::salt::get_with_username(&pool, &payload.username) {
|
||||
Ok(service_user) => {
|
||||
}
|
||||
Err(err) => {
|
||||
}
|
||||
}
|
||||
(axum::http::StatusCode::NOT_IMPLEMENTED, axum::Json(resp))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user