60 lines
2.0 KiB
Rust
60 lines
2.0 KiB
Rust
use crate::database::controller::api_members::delete_entity_deprecated;
|
|
use crate::database::controller::groups::get_groups_for_member;
|
|
use crate::helper::check_access::check_access_to_member_and_group;
|
|
use crate::helper::session_cookies::model::SessionCookie;
|
|
use crate::helper::settings::Settings;
|
|
use crate::modules::api::member_management::controller::parser::{parse_member_cookie, parse_uuid_string};
|
|
|
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
|
use rocket::State;
|
|
use rocket::serde::json::Json;
|
|
|
|
#[delete("/api/members/<entity_id>", format = "json")]
|
|
pub fn api_members_delete(
|
|
cookie: SessionCookie,
|
|
settings: &State<Settings>,
|
|
entity_id: String,
|
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
|
let caller = parse_member_cookie(cookie.member)?;
|
|
let member_id = parse_uuid_string(entity_id)?;
|
|
let groups = get_groups_for_member(settings, member_id);
|
|
|
|
if !check_access_to_member_and_group(
|
|
&settings,
|
|
member_id,
|
|
groups,
|
|
caller.entity_id,
|
|
"modules.member_management.profile.delete".to_string(),
|
|
) {
|
|
return Err(Json(
|
|
ApiError::new(403, "Keine Berechtigung Mitglied zu löschen!".to_string()).to_wrapper(),
|
|
));
|
|
}
|
|
|
|
match delete_entity_deprecated(settings, member_id) {
|
|
Ok(result) => {
|
|
if result == 1 {
|
|
Ok(())
|
|
} else {
|
|
Err(Json(
|
|
ApiError::new(500, "Es ist ein Datenbankfehler aufgetreten!".to_string())
|
|
.to_wrapper(),
|
|
))
|
|
}
|
|
}
|
|
Err(e) => match e {
|
|
diesel::result::Error::NotFound => Err(Json(
|
|
ApiError::new(
|
|
404,
|
|
"Das angeforderte Mitglied konnte nicht gefunden werden!".to_string(),
|
|
)
|
|
.to_wrapper(),
|
|
)),
|
|
_ => Err(Json(
|
|
ApiError::new(500, "Es ist ein Datenbankfehler aufgetreten!".to_string())
|
|
.to_wrapper(),
|
|
)),
|
|
},
|
|
}
|
|
}
|