1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-03-13 09:22:38 +00:00
comunicapiv3/src/controllers/admin/admin_users_controller.rs

38 lines
1.4 KiB
Rust
Raw Normal View History

2021-07-12 17:18:06 +02:00
//! # Admin : users management controller
//!
//! @author Pierre Hubert
use crate::api_data::admin::admin_search_user_result_api::AdminSearchUserResult;
use crate::api_data::admin::admin_user_info_api::AdminUserInfoAPI;
2021-07-12 17:18:06 +02:00
use crate::constants::admin::AdminRole;
use crate::data::admin_action_log::AdminAction;
use crate::data::base_request_handler::BaseRequestHandler;
use crate::data::http_request_handler::HttpRequestHandler;
use crate::helpers::admin_log_helper::log_admin_action;
2021-07-12 17:18:06 +02:00
use crate::helpers::user_helper;
use crate::routes::RequestResult;
2021-07-12 17:18:06 +02:00
/// Search for user
pub fn search(r: &mut HttpRequestHandler) -> RequestResult {
r.check_admin_has_role(AdminRole::MANAGE_USERS)?;
let name = r.post_string_opt("name", 0, true)?;
let email = r.post_string_opt("email", 0, true)?;
let results = user_helper::search_user_admin(&name, &email, 50)?;
r.set_response(results.into_iter().map(AdminSearchUserResult::new).collect::<Vec<_>>())
}
/// Get information about a single user
pub fn get_single(r: &mut HttpRequestHandler) -> RequestResult {
r.check_admin_has_role(AdminRole::MANAGE_USERS)?;
let user_id = r.post_user_id("user_id")?;
let user = user_helper::find_user_by_id(&user_id)?;
log_admin_action(r.admin_id()?, &r.remote_ip(),
AdminAction::AccessUserPage { user_id, user_name: user.full_name() })?;
r.set_response(AdminUserInfoAPI::new(user))
2021-07-12 17:18:06 +02:00
}