50 lines
2.0 KiB
Rust
50 lines
2.0 KiB
Rust
use crate::helper::session_cookies::model::SessionCookie;
|
|
use rocket::State;
|
|
use crate::helper::settings::Settings;
|
|
use rocket::serde::json::Json;
|
|
use crate::modules::member_management::model::qualifications::{QualificationList, QualificationCategory};
|
|
use crate::modules::api::model::api_outcome::{ApiErrorWrapper, ApiError};
|
|
use crate::modules::api::member_management::controller::parser::{parse_member_cookie, parse_uuid_string};
|
|
use crate::helper::check_access::check_access_to_member_and_group;
|
|
use crate::database::controller::groups::get_groups_for_member;
|
|
use crate::database::controller::member_qualifications::{get_qualifcation_categories, get_qualifications};
|
|
use crate::helper::translate_diesel_error::translate_diesel;
|
|
|
|
#[get(
|
|
"/api/members/<member_id>/qualifications",
|
|
format = "json"
|
|
)]
|
|
pub fn api_member_qualifications_read(
|
|
cookie: SessionCookie,
|
|
settings: &State<Settings>,
|
|
member_id: String,
|
|
) -> Result<Json<QualificationList>, Json<ApiErrorWrapper>> {
|
|
let caller = parse_member_cookie(cookie.member)?;
|
|
let member_id = parse_uuid_string(member_id)?;
|
|
|
|
let groups = get_groups_for_member(settings, member_id);
|
|
|
|
if !check_access_to_member_and_group(settings, member_id, groups, caller.entity_id, crate::permissions::modules::member_management::profile::qualifications::VIEW.to_string()){
|
|
return Err(Json(ApiError::new(401, "Keine Berechtigung Qualifikationen für dieses Mitglied abzurufen!".to_string()).to_wrapper()))
|
|
}
|
|
|
|
//TODO: Proper error handling/display
|
|
let categories = get_qualifcation_categories(settings, member_id);
|
|
Ok(Json(QualificationList { categories }))
|
|
}
|
|
|
|
#[get(
|
|
"/api/members/qualifications",
|
|
format = "json"
|
|
)]
|
|
pub fn read_qualifications(
|
|
cookie: SessionCookie,
|
|
settings: &State<Settings>,
|
|
) -> Result<Json<Vec<QualificationCategory>>, Json<ApiErrorWrapper>> {
|
|
let _caller = parse_member_cookie(cookie.member)?;
|
|
|
|
match get_qualifications(settings){
|
|
Ok(qual) => Ok(Json(qual)),
|
|
Err(e) => Err(translate_diesel(e))
|
|
}
|
|
} |