Refactoring: Moved old api method to new rest api

This commit is contained in:
Keanu D?lle 2021-01-05 19:19:36 +01:00
parent 4891d8004c
commit 1400147761
5 changed files with 37 additions and 36 deletions

View File

@ -316,8 +316,8 @@ CommunicationModule = ( function() {
var target_id = row.data("target-id");
$.ajax({
type: "PUT",
url: "/api/member_management/remove_communication_target?target_id="+target_id,
type: "DELETE",
url: "/api/communication_targets/"+target_id,
contentType: 'application/json',
timeout: 3000,
error: function () {

View File

@ -124,13 +124,13 @@ fn main() {
modules::api::member_management::view::member_driving_permissions::api_member_add_driving_license,
modules::api::member_management::view::member_driving_permissions::api_member_add_driving_permission,
modules::api::member_management::view::member_driving_permissions::api_member_remove_driving_license,
modules::api::member_management::view::member_communication::api_member_remove_communication_target,
modules::api::members::get_member::api_members_get,
modules::api::members::get_member::api_members_search_name,
modules::api::members::delete_member::api_members_delete,
modules::api::members::member_communication::api_communication_targets_update,
modules::api::members::member_communication::api_communication_types_get,
modules::api::members::member_communication::api_communication_targets_create,
modules::api::members::member_communication::api_communication_targets_delete,
modules::api::groups::create::create_group,
modules::api::groups::delete::delete_groups,
modules::api::groups::read::read_group,

View File

@ -1,31 +0,0 @@
use crate::database::controller::member_communication::{
add_communication_target, remove_communication_target,
};
use crate::database::model::member_communication::CommunicationTargetCreate;
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};
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
use rocket::State;
use rocket_contrib::json::Json;
#[put(
"/api/member_management/remove_communication_target?<target_id>",
format = "json"
)]
pub fn api_member_remove_communication_target(
cookie: SessionCookie,
settings: State<Settings>,
target_id: String,
) -> Result<(), Json<ApiErrorWrapper>> {
//TODO: Check permissions!
let member = parse_member_cookie(cookie.member)?;
let target_id = parse_uuid(target_id)?;
match remove_communication_target(&settings, target_id) {
Ok(_) => Ok(()),
Err(_) => Err(Json(
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
)),
}
}

View File

@ -1,3 +1,2 @@
pub mod member_communication;
pub mod member_driving_permissions;
pub mod member_qualifications;

View File

@ -10,7 +10,7 @@ use rocket::State;
use rocket_contrib::json::Json;
use crate::helper::check_access::check_access;
use crate::database::controller::groups::get_groups_for_member;
use crate::database::controller::member_communication::{get_communication_target, add_communication_target};
use crate::database::controller::member_communication::{get_communication_target, add_communication_target, remove_communication_target};
use crate::helper::translate_diesel_error::translate_diesel;
use crate::database::model::member_communication::CommunicationTargetCreate;
@ -147,6 +147,39 @@ pub fn api_communication_targets_update(
}
}
#[delete(
"/api/communication_targets/<target_id>",
format = "json"
)]
pub fn api_communication_targets_delete(
cookie: SessionCookie,
settings: State<Settings>,
target_id: String,
) -> Result<(), Json<ApiErrorWrapper>> {
let member = parse_member_cookie(cookie.member)?;
let target_id = parse_uuid(target_id)?;
let target = match get_communication_target(&settings, target_id){
Ok(target) => target,
Err(e) => {
return Err(translate_diesel(e))
}
};
let groups = get_groups_for_member(&settings, target.entity_id);
if !check_access(&settings, target.entity_id, groups, member.entity_id, crate::permissions::modules::member_management::profile::communication::EDIT.to_string()){
return Err(Json(ApiError::new(401, "Keine Berechtigung Kommunikationseintrag zu löschen!".to_string()).to_wrapper()))
}
match remove_communication_target(&settings, target_id) {
Ok(_) => Ok(()),
Err(_) => Err(Json(
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
)),
}
}
#[derive(Serialize, Deserialize, Queryable, Clone)]
pub struct CommunicationType {
pub(crate) type_id: uuid::Uuid,