EinsatzOnline/src/modules/api/member_management/view/member_driving_permissions.rs

89 lines
3.1 KiB
Rust

use crate::helper::check_access::check_access_legacy;
use crate::helper::session_cookies::model::SessionCookie;
use crate::helper::settings::Settings;
use crate::modules::api::member_management::controller::member_driving_permissions::{
add_member_driving_permission_or_error, add_member_license_or_error,
remove_member_license_or_error,
};
use crate::modules::api::member_management::controller::parser::{
get_member_or_error, parse_member_cookie, parse_uuid_string,
};
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
use rocket::State;
use rocket::serde::json::Json;
#[put(
"/api/member_management/add_driving_license?<member_id>&<license_name>",
format = "json"
)]
pub fn api_member_add_driving_license(
cookie: SessionCookie,
settings: &State<Settings>,
member_id: String,
license_name: String,
) -> Result<(), Json<ApiErrorWrapper>> {
let caller = parse_member_cookie(cookie.member)?;
let member = get_member_or_error(parse_uuid_string(member_id)?, &settings)?;
if !check_access_legacy(
&settings,
&member,
caller.entity_id,
crate::permissions::modules::member_management::profile::drive_permissions_licenses::EDIT.to_string(),
) {
return Err(Json(ApiError::new(403, "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()).to_wrapper()));
}
add_member_license_or_error(member.entity_id, license_name, &settings)
}
#[put(
"/api/member_management/add_driving_permission?<member_id>&<license_name>",
format = "json"
)]
pub fn api_member_add_driving_permission(
cookie: SessionCookie,
settings: &State<Settings>,
member_id: String,
license_name: String,
) -> Result<(), Json<ApiErrorWrapper>> {
let caller = parse_member_cookie(cookie.member)?;
let member = get_member_or_error(parse_uuid_string(member_id)?, &settings)?;
if !check_access_legacy(
&settings,
&member,
caller.entity_id,
crate::permissions::modules::member_management::profile::drive_permissions_licenses::EDIT.to_string(),
) {
return Err(Json(ApiError::new(403, "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()).to_wrapper()));
}
add_member_driving_permission_or_error(member.entity_id, license_name, &settings)
}
#[put(
"/api/member_management/remove_driving_license?<member_id>&<license_name>",
format = "json"
)]
pub fn api_member_remove_driving_license(
cookie: SessionCookie,
settings: &State<Settings>,
member_id: String,
license_name: String,
) -> Result<(), Json<ApiErrorWrapper>> {
let caller = parse_member_cookie(cookie.member)?;
let member = get_member_or_error(parse_uuid_string(member_id)?, &settings)?;
if !check_access_legacy(
&settings,
&member,
caller.entity_id,
crate::permissions::modules::member_management::profile::drive_permissions_licenses::EDIT.to_string(),
) {
return Err(Json(ApiError::new(403, "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()).to_wrapper()));
}
remove_member_license_or_error(member.entity_id, license_name, &settings)
}