mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-07-06 15:52:48 +00:00
Administrators can create password recovery links
This commit is contained in:
@ -2,11 +2,13 @@
|
||||
//!
|
||||
//! @author Pierre Hubert
|
||||
|
||||
use crate::api_data::admin::admin_create_password_recovery_link_api::AdminCreatedPasswordRecoveryLinkApi;
|
||||
use crate::api_data::admin::admin_search_user_result_api::AdminSearchUserResult;
|
||||
use crate::api_data::admin::admin_user_info_api::AdminUserInfoAPI;
|
||||
use crate::constants::admin::AdminRole;
|
||||
use crate::data::admin_action_log::AdminAction;
|
||||
use crate::data::base_request_handler::BaseRequestHandler;
|
||||
use crate::data::config::conf;
|
||||
use crate::data::http_request_handler::HttpRequestHandler;
|
||||
use crate::helpers::{account_helper, user_helper};
|
||||
use crate::helpers::admin_log_helper::log_admin_action;
|
||||
@ -62,4 +64,20 @@ pub fn change_email_address(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
})?;
|
||||
|
||||
r.ok()
|
||||
}
|
||||
|
||||
/// Create a password recovery link for a Comunic user
|
||||
pub fn create_password_recovery_link(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)?;
|
||||
|
||||
let token = account_helper::generate_password_reset_token(&user_id)?;
|
||||
let recovery_link = conf().password_reset_url.replace("{TOKEN}", &token);
|
||||
|
||||
log_admin_action(r.admin_id()?, &r.remote_ip(),
|
||||
AdminAction::CreatePasswordRecoveryLink { user_id, user_name: user.full_name() })?;
|
||||
|
||||
r.set_response(AdminCreatedPasswordRecoveryLinkApi::new(recovery_link))
|
||||
}
|
Reference in New Issue
Block a user