Wrapped ApiError to have an simple "error" json object.
This commit is contained in:
parent
44b39a348f
commit
b847228f82
|
@ -142,6 +142,7 @@ DrivingPermissionModule = ( function() {
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
if('')
|
||||||
$(element).removeClass("btn-success").addClass("btn-warning");
|
$(element).removeClass("btn-success").addClass("btn-warning");
|
||||||
$(element).data("permission-level", "license");
|
$(element).data("permission-level", "license");
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,7 +2,7 @@ use crate::database::controller::member_licenses::{
|
||||||
add_member_driving_permission, add_member_license, remove_member_license,
|
add_member_driving_permission, add_member_license, remove_member_license,
|
||||||
};
|
};
|
||||||
use crate::helper::settings::Settings;
|
use crate::helper::settings::Settings;
|
||||||
use crate::modules::api::model::api_outcome::ApiError;
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
||||||
use diesel::result::Error;
|
use diesel::result::Error;
|
||||||
use rocket::State;
|
use rocket::State;
|
||||||
use rocket_contrib::json::Json;
|
use rocket_contrib::json::Json;
|
||||||
|
@ -11,22 +11,20 @@ pub fn add_member_license_or_error(
|
||||||
member_id: uuid::Uuid,
|
member_id: uuid::Uuid,
|
||||||
license_name: String,
|
license_name: String,
|
||||||
settings: &State<Settings>,
|
settings: &State<Settings>,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
match add_member_license(settings, member_id, license_name) {
|
match add_member_license(settings, member_id, license_name) {
|
||||||
Ok(num) => {
|
Ok(num) => {
|
||||||
if num != 1 {
|
if num != 1 {
|
||||||
Err(Json(ApiError {
|
Err(Json(
|
||||||
code: "500-invalid-database-operations".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten.".to_string()).to_wrapper(),
|
||||||
description: format!("Performed {} database operations. Should be one.", num),
|
))
|
||||||
}))
|
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(_) => Err(Json(ApiError {
|
Err(_) => Err(Json(
|
||||||
code: "500-database-error".to_string(),
|
ApiError::new(400, "Datenbankfehler aufgetreten.".to_string()).to_wrapper(),
|
||||||
description: format!("Database Error occurred."),
|
)),
|
||||||
})),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,22 +32,22 @@ pub fn add_member_driving_permission_or_error(
|
||||||
member_id: uuid::Uuid,
|
member_id: uuid::Uuid,
|
||||||
license_name: String,
|
license_name: String,
|
||||||
settings: &State<Settings>,
|
settings: &State<Settings>,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
match add_member_driving_permission(settings, member_id, license_name) {
|
match add_member_driving_permission(settings, member_id, license_name) {
|
||||||
Ok(num) => {
|
Ok(num) => {
|
||||||
if num != 1 {
|
if num != 1 {
|
||||||
Err(Json(ApiError {
|
Err(Json(
|
||||||
code: "500-invalid-database-operations".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
||||||
description: format!("Performed {} database operations. Should be one.", num),
|
))
|
||||||
}))
|
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(_) => Err(Json(ApiError {
|
Err(_) => {
|
||||||
code: "500-database-error".to_string(),
|
(Err(Json(
|
||||||
description: format!("Database Error occurred."),
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
||||||
})),
|
)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,21 +55,19 @@ pub fn remove_member_license_or_error(
|
||||||
member_id: uuid::Uuid,
|
member_id: uuid::Uuid,
|
||||||
license_name: String,
|
license_name: String,
|
||||||
settings: &State<Settings>,
|
settings: &State<Settings>,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
match remove_member_license(settings, member_id, license_name) {
|
match remove_member_license(settings, member_id, license_name) {
|
||||||
Ok(num) => {
|
Ok(num) => {
|
||||||
if num != 1 {
|
if num != 1 {
|
||||||
Err(Json(ApiError {
|
Err(Json(
|
||||||
code: "500-invalid-database-operations".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten.".to_string()).to_wrapper(),
|
||||||
description: format!("Performed {} database operations. Should be one.", num),
|
))
|
||||||
}))
|
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(_) => Err(Json(ApiError {
|
Err(_) => Err(Json(
|
||||||
code: "500-database-error".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten.".to_string()).to_wrapper(),
|
||||||
description: format!("Database Error occurred."),
|
)),
|
||||||
})),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
use crate::modules::api::model::api_outcome::ApiError;
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
||||||
use rocket_contrib::json::Json;
|
use rocket_contrib::json::Json;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
pub fn parse_qualification_id(qualification_id: String) -> Result<uuid::Uuid, Json<ApiError>> {
|
pub fn parse_qualification_id(
|
||||||
|
qualification_id: String,
|
||||||
|
) -> Result<uuid::Uuid, Json<ApiErrorWrapper>> {
|
||||||
match uuid::Uuid::from_str(&qualification_id) {
|
match uuid::Uuid::from_str(&qualification_id) {
|
||||||
Ok(id) => Ok(id),
|
Ok(id) => Ok(id),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -10,15 +12,14 @@ pub fn parse_qualification_id(qualification_id: String) -> Result<uuid::Uuid, Js
|
||||||
"Couldn't parse qualification uuid send via API: {} {}",
|
"Couldn't parse qualification uuid send via API: {} {}",
|
||||||
qualification_id, e
|
qualification_id, e
|
||||||
);
|
);
|
||||||
Err(Json(ApiError {
|
Err(Json(
|
||||||
code: "400-qualification-uuid-invalid".to_string(),
|
ApiError::new(400, "Qualifikations UUID ungültig".to_string()).to_wrapper(),
|
||||||
description: "qualification UUID invalid".to_string(),
|
))
|
||||||
}))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse_category_id(category_id: String) -> Result<uuid::Uuid, Json<ApiError>> {
|
pub fn parse_category_id(category_id: String) -> Result<uuid::Uuid, Json<ApiErrorWrapper>> {
|
||||||
match uuid::Uuid::from_str(&category_id) {
|
match uuid::Uuid::from_str(&category_id) {
|
||||||
Ok(id) => Ok(id),
|
Ok(id) => Ok(id),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -26,10 +27,9 @@ pub fn parse_category_id(category_id: String) -> Result<uuid::Uuid, Json<ApiErro
|
||||||
"Couldn't parse category_id send via API: {} {}",
|
"Couldn't parse category_id send via API: {} {}",
|
||||||
category_id, e
|
category_id, e
|
||||||
);
|
);
|
||||||
Err(Json(ApiError {
|
Err(Json(
|
||||||
code: "400-category_id-invalid".to_string(),
|
ApiError::new(400, "Kategoreie ID ungültig".to_string()).to_wrapper(),
|
||||||
description: "category id invalid".to_string(),
|
))
|
||||||
}))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
use crate::database::controller::members::get_member_by_uuid;
|
use crate::database::controller::members::get_member_by_uuid;
|
||||||
use crate::helper::settings::Settings;
|
use crate::helper::settings::Settings;
|
||||||
use crate::modules::api::model::api_outcome::ApiError;
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
||||||
use crate::modules::member_management::model::member::Member;
|
use crate::modules::member_management::model::member::Member;
|
||||||
use rocket::State;
|
use rocket::State;
|
||||||
use rocket_contrib::json::Json;
|
use rocket_contrib::json::Json;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
pub fn parse_member_id(member_id: String) -> Result<uuid::Uuid, Json<ApiError>> {
|
pub fn parse_member_id(member_id: String) -> Result<uuid::Uuid, Json<ApiErrorWrapper>> {
|
||||||
match uuid::Uuid::from_str(&member_id) {
|
match uuid::Uuid::from_str(&member_id) {
|
||||||
Ok(id) => Ok(id),
|
Ok(id) => Ok(id),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -14,10 +14,9 @@ pub fn parse_member_id(member_id: String) -> Result<uuid::Uuid, Json<ApiError>>
|
||||||
"Couldn't parse member uuid send via API: {} {}",
|
"Couldn't parse member uuid send via API: {} {}",
|
||||||
member_id, e
|
member_id, e
|
||||||
);
|
);
|
||||||
Err(Json(ApiError {
|
Err(Json(
|
||||||
code: "400".to_string(),
|
ApiError::new(400, "UUID des Mitglieds ist ungültig!".to_string()).to_wrapper(),
|
||||||
description: "Mitglied UUID ungültig.".to_string(),
|
))
|
||||||
}))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,23 +24,21 @@ pub fn parse_member_id(member_id: String) -> Result<uuid::Uuid, Json<ApiError>>
|
||||||
pub fn get_member_or_error(
|
pub fn get_member_or_error(
|
||||||
member_id: uuid::Uuid,
|
member_id: uuid::Uuid,
|
||||||
settings: &State<Settings>,
|
settings: &State<Settings>,
|
||||||
) -> Result<Member, Json<ApiError>> {
|
) -> Result<Member, Json<ApiErrorWrapper>> {
|
||||||
match get_member_by_uuid(member_id, &settings) {
|
match get_member_by_uuid(member_id, &settings) {
|
||||||
Some(member) => Ok(member),
|
Some(member) => Ok(member),
|
||||||
None => Err(Json(ApiError {
|
None => Err(Json(
|
||||||
code: "500".to_string(),
|
ApiError::new(500, "Konnte Mitglied nicht laden!".to_string()).to_wrapper(),
|
||||||
description: "Konnte Mitglied nicht laden.".to_string(),
|
)),
|
||||||
})),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
||||||
pub fn parse_member_cookie(member: Option<Member>) -> Result<Member, Json<ApiError>> {
|
pub fn parse_member_cookie(member: Option<Member>) -> Result<Member, Json<ApiErrorWrapper>> {
|
||||||
match member {
|
match member {
|
||||||
Some(member) => Ok(member),
|
Some(member) => Ok(member),
|
||||||
None => Err(Json(ApiError {
|
None => Err(Json(
|
||||||
code: "403".to_string(),
|
ApiError::new(403, "Kein Mitglied für Account ausgewählt!".to_string()).to_wrapper(),
|
||||||
description: "Mitgliederauswahl übersprungen".to_string(),
|
)),
|
||||||
})),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ use crate::modules::api::member_management::controller::parser::{
|
||||||
use crate::modules::api::member_management::model::member_communication::{
|
use crate::modules::api::member_management::model::member_communication::{
|
||||||
CommunicationTargetId, CommunicationTypeList,
|
CommunicationTargetId, CommunicationTypeList,
|
||||||
};
|
};
|
||||||
use crate::modules::api::model::api_outcome::ApiError;
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
||||||
use diesel::result::Error;
|
use diesel::result::Error;
|
||||||
use rocket::State;
|
use rocket::State;
|
||||||
use rocket_contrib::json::Json;
|
use rocket_contrib::json::Json;
|
||||||
|
@ -19,7 +19,7 @@ use rocket_contrib::json::Json;
|
||||||
pub fn api_member_get_communication_types(
|
pub fn api_member_get_communication_types(
|
||||||
cookie: SessionCookie,
|
cookie: SessionCookie,
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
) -> Result<Json<CommunicationTypeList>, Json<ApiError>> {
|
) -> Result<Json<CommunicationTypeList>, Json<ApiErrorWrapper>> {
|
||||||
//TODO: Check permissions!
|
//TODO: Check permissions!
|
||||||
let member = parse_member_cookie(cookie.member)?;
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
|
|
||||||
|
@ -37,16 +37,15 @@ pub fn api_member_add_communication_target(
|
||||||
cookie: SessionCookie,
|
cookie: SessionCookie,
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
communication_target: Json<CommunicationTarget>,
|
communication_target: Json<CommunicationTarget>,
|
||||||
) -> Result<Json<CommunicationTargetId>, Json<ApiError>> {
|
) -> Result<Json<CommunicationTargetId>, Json<ApiErrorWrapper>> {
|
||||||
//TODO: Check permissions!
|
//TODO: Check permissions!
|
||||||
let member = parse_member_cookie(cookie.member)?;
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
|
|
||||||
match add_communication_target(&settings, communication_target.into_inner()) {
|
match add_communication_target(&settings, communication_target.into_inner()) {
|
||||||
Ok(target_id) => Ok(Json(CommunicationTargetId { target_id })),
|
Ok(target_id) => Ok(Json(CommunicationTargetId { target_id })),
|
||||||
Err(_) => Err(Json(ApiError {
|
Err(_) => Err(Json(
|
||||||
code: "500".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
||||||
description: format!("Database error occured."),
|
)),
|
||||||
})),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,16 +57,15 @@ pub fn api_member_remove_communication_target(
|
||||||
cookie: SessionCookie,
|
cookie: SessionCookie,
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
target_id: String,
|
target_id: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
//TODO: Check permissions!
|
//TODO: Check permissions!
|
||||||
let member = parse_member_cookie(cookie.member)?;
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
let target_id = parse_member_id(target_id)?;
|
let target_id = parse_member_id(target_id)?;
|
||||||
|
|
||||||
match remove_communication_target(&settings, target_id) {
|
match remove_communication_target(&settings, target_id) {
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => Ok(()),
|
||||||
Err(_) => Err(Json(ApiError {
|
Err(_) => Err(Json(
|
||||||
code: "500".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
||||||
description: "Database error occured".to_string(),
|
)),
|
||||||
})),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ use crate::modules::api::member_management::controller::member_driving_permissio
|
||||||
use crate::modules::api::member_management::controller::parser::{
|
use crate::modules::api::member_management::controller::parser::{
|
||||||
get_member_or_error, parse_member_cookie, parse_member_id,
|
get_member_or_error, parse_member_cookie, parse_member_id,
|
||||||
};
|
};
|
||||||
use crate::modules::api::model::api_outcome::ApiError;
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
||||||
use rocket::State;
|
use rocket::State;
|
||||||
use rocket_contrib::json::Json;
|
use rocket_contrib::json::Json;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
@ -23,7 +23,7 @@ pub fn api_member_add_driving_license(
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
member_id: String,
|
member_id: String,
|
||||||
license_name: String,
|
license_name: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
let caller = parse_member_cookie(cookie.member)?;
|
let caller = parse_member_cookie(cookie.member)?;
|
||||||
let member = get_member_or_error(parse_member_id(member_id)?, &settings)?;
|
let member = get_member_or_error(parse_member_id(member_id)?, &settings)?;
|
||||||
|
|
||||||
|
@ -33,10 +33,7 @@ pub fn api_member_add_driving_license(
|
||||||
caller.entity_id,
|
caller.entity_id,
|
||||||
"modules.member_management.modules.member_management.profile.drive_permissions_licenses.edit".to_string(),
|
"modules.member_management.modules.member_management.profile.drive_permissions_licenses.edit".to_string(),
|
||||||
) {
|
) {
|
||||||
return Err(Json(ApiError{
|
return Err(Json(ApiError::new(401, "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()).to_wrapper()));
|
||||||
code: "401".to_string(),
|
|
||||||
description: "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
add_member_license_or_error(member.entity_id, license_name, &settings)
|
add_member_license_or_error(member.entity_id, license_name, &settings)
|
||||||
|
@ -51,7 +48,7 @@ pub fn api_member_add_driving_permission(
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
member_id: String,
|
member_id: String,
|
||||||
license_name: String,
|
license_name: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
let caller = parse_member_cookie(cookie.member)?;
|
let caller = parse_member_cookie(cookie.member)?;
|
||||||
let member = get_member_or_error(parse_member_id(member_id)?, &settings)?;
|
let member = get_member_or_error(parse_member_id(member_id)?, &settings)?;
|
||||||
|
|
||||||
|
@ -61,10 +58,7 @@ pub fn api_member_add_driving_permission(
|
||||||
caller.entity_id,
|
caller.entity_id,
|
||||||
"modules.member_management.modules.member_management.profile.drive_permissions_licenses.edit".to_string(),
|
"modules.member_management.modules.member_management.profile.drive_permissions_licenses.edit".to_string(),
|
||||||
) {
|
) {
|
||||||
return Err(Json(ApiError{
|
return Err(Json(ApiError::new(401, "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()).to_wrapper()));
|
||||||
code: "401".to_string(),
|
|
||||||
description: "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
add_member_driving_permission_or_error(member.entity_id, license_name, &settings)
|
add_member_driving_permission_or_error(member.entity_id, license_name, &settings)
|
||||||
|
@ -79,7 +73,7 @@ pub fn api_member_remove_driving_license(
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
member_id: String,
|
member_id: String,
|
||||||
license_name: String,
|
license_name: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
let caller = parse_member_cookie(cookie.member)?;
|
let caller = parse_member_cookie(cookie.member)?;
|
||||||
let member = get_member_or_error(parse_member_id(member_id)?, &settings)?;
|
let member = get_member_or_error(parse_member_id(member_id)?, &settings)?;
|
||||||
|
|
||||||
|
@ -89,10 +83,7 @@ pub fn api_member_remove_driving_license(
|
||||||
caller.entity_id,
|
caller.entity_id,
|
||||||
"modules.member_management.modules.member_management.profile.drive_permissions_licenses.edit".to_string(),
|
"modules.member_management.modules.member_management.profile.drive_permissions_licenses.edit".to_string(),
|
||||||
) {
|
) {
|
||||||
return Err(Json(ApiError{
|
return Err(Json(ApiError::new(401, "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()).to_wrapper()));
|
||||||
code: "401".to_string(),
|
|
||||||
description: "Keine Berechtigung, Fahrberechtigungen zu ändern!".to_string()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_member_license_or_error(member.entity_id, license_name, &settings)
|
remove_member_license_or_error(member.entity_id, license_name, &settings)
|
||||||
|
|
|
@ -10,7 +10,7 @@ use crate::modules::api::member_management::controller::member_qualifications::{
|
||||||
use crate::modules::api::member_management::controller::parser::{
|
use crate::modules::api::member_management::controller::parser::{
|
||||||
parse_member_cookie, parse_member_id,
|
parse_member_cookie, parse_member_id,
|
||||||
};
|
};
|
||||||
use crate::modules::api::model::api_outcome::ApiError;
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
||||||
use crate::modules::member_management::model::qualifications::{
|
use crate::modules::member_management::model::qualifications::{
|
||||||
Qualification, QualificationCategory, QualificationList,
|
Qualification, QualificationCategory, QualificationList,
|
||||||
};
|
};
|
||||||
|
@ -28,7 +28,7 @@ pub fn api_member_get_qualifications(
|
||||||
cookie: SessionCookie,
|
cookie: SessionCookie,
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
member_id: String,
|
member_id: String,
|
||||||
) -> Result<Json<QualificationList>, Json<ApiError>> {
|
) -> Result<Json<QualificationList>, Json<ApiErrorWrapper>> {
|
||||||
//TODO: Check permissions!
|
//TODO: Check permissions!
|
||||||
let member = parse_member_cookie(cookie.member)?;
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
let member_id = parse_member_id(member_id)?;
|
let member_id = parse_member_id(member_id)?;
|
||||||
|
@ -46,7 +46,7 @@ pub fn api_member_get_qualifications_for_category(
|
||||||
cookie: SessionCookie,
|
cookie: SessionCookie,
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
category_id: String,
|
category_id: String,
|
||||||
) -> Result<Json<Vec<Qualification>>, Json<ApiError>> {
|
) -> Result<Json<Vec<Qualification>>, Json<ApiErrorWrapper>> {
|
||||||
//TODO: Check permissions!
|
//TODO: Check permissions!
|
||||||
let member = parse_member_cookie(cookie.member)?;
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
let category_id = parse_category_id(category_id)?;
|
let category_id = parse_category_id(category_id)?;
|
||||||
|
@ -65,7 +65,7 @@ pub fn api_member_remove_qualification(
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
member_id: String,
|
member_id: String,
|
||||||
qualification_id: String,
|
qualification_id: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
let member = parse_member_cookie(cookie.member)?;
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
let member_id = parse_member_id(member_id)?;
|
let member_id = parse_member_id(member_id)?;
|
||||||
let qualification_id = parse_qualification_id(qualification_id)?;
|
let qualification_id = parse_qualification_id(qualification_id)?;
|
||||||
|
@ -73,10 +73,9 @@ pub fn api_member_remove_qualification(
|
||||||
match remove_qualification_for_member(&settings, member_id, qualification_id) {
|
match remove_qualification_for_member(&settings, member_id, qualification_id) {
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => Ok(()),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
return Err(Json(ApiError {
|
return Err(Json(
|
||||||
code: "500".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
||||||
description: format!("Database error occured: {}", e),
|
))
|
||||||
}))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +91,7 @@ pub fn api_member_add_qualification(
|
||||||
settings: State<Settings>,
|
settings: State<Settings>,
|
||||||
member_id: String,
|
member_id: String,
|
||||||
qualification_id: String,
|
qualification_id: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
||||||
let member = parse_member_cookie(cookie.member)?;
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
let member_id = parse_member_id(member_id)?;
|
let member_id = parse_member_id(member_id)?;
|
||||||
let qualification_id = parse_qualification_id(qualification_id)?;
|
let qualification_id = parse_qualification_id(qualification_id)?;
|
||||||
|
@ -100,10 +99,9 @@ pub fn api_member_add_qualification(
|
||||||
match add_qualification_for_member(&settings, member_id, qualification_id) {
|
match add_qualification_for_member(&settings, member_id, qualification_id) {
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => Ok(()),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
return Err(Json(ApiError {
|
return Err(Json(
|
||||||
code: "500".to_string(),
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
||||||
description: format!("Database error occured: {}", e),
|
))
|
||||||
}))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,19 @@
|
||||||
#[derive(Serialize, Deserialize, Queryable, Clone, Debug)]
|
#[derive(Serialize, Deserialize, Queryable, Clone, Debug)]
|
||||||
pub struct ApiError {
|
pub struct ApiError {
|
||||||
pub(crate) code: String,
|
pub(crate) code: u16,
|
||||||
pub(crate) description: String,
|
pub(crate) description: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Queryable, Clone, Debug)]
|
||||||
|
pub struct ApiErrorWrapper {
|
||||||
|
pub(crate) error: ApiError,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ApiError {
|
||||||
|
pub fn new(code: u16, description: String) -> ApiError {
|
||||||
|
ApiError { code, description }
|
||||||
|
}
|
||||||
|
pub fn to_wrapper(self) -> ApiErrorWrapper {
|
||||||
|
ApiErrorWrapper { error: self }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue