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:
@ -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()
|
||||
}
|
Reference in New Issue
Block a user