1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-06-20 16:35:17 +00:00

Can update admin roles

This commit is contained in:
2021-05-15 09:10:39 +02:00
parent e619d71601
commit d933dadf62
5 changed files with 65 additions and 6 deletions

View File

@ -3,15 +3,38 @@
//! @author Pierre Hubert
use crate::api_data::admin::admin_role_api::AdminRoleDetailsAPI;
use crate::constants::admin::ADMIN_ROLES_LIST;
use crate::constants::admin::{ADMIN_ROLES_LIST, AdminRole};
use crate::data::base_request_handler::BaseRequestHandler;
use crate::data::http_request_handler::HttpRequestHandler;
use crate::helpers::admin_roles_helper;
use crate::routes::RequestResult;
/// Get the list of roles embedded in the code
pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
let res = ADMIN_ROLES_LIST.iter()
.map(AdminRoleDetailsAPI::new)
.collect::<Vec<AdminRoleDetailsAPI>>();
r.set_response(res)
}
/// Toggle the status of a role for an admin
pub fn toggle(r: &mut HttpRequestHandler) -> RequestResult {
r.check_admin_has_role(AdminRole::MANAGE_ADMINS)?;
let admin_id = r.post_admin_id("adminID")?;
let enable = r.post_bool("enable")?;
let role_str = r.post_string("role")?;
let role = r.some_or_bad_request(
AdminRole::from_id(&role_str),
"Specified role does not exists!",
)?;
if !enable {
admin_roles_helper::remove_role(admin_id, role)?;
} else if !admin_roles_helper::has_role(admin_id, role)? {
admin_roles_helper::add_role(admin_id, role)?;
}
r.ok()
}