1
0
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:
2021-07-13 17:28:48 +02:00
parent 71254c47f1
commit 8ade67d899
5 changed files with 39 additions and 1 deletions

View File

@ -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))
}