1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-07-06 15:52:48 +00:00

Make all HTTP routes asynchronous

This commit is contained in:
2022-03-11 21:56:08 +01:00
parent 13e73ede8b
commit b2514351a1
24 changed files with 161 additions and 156 deletions

View File

@ -20,7 +20,7 @@ use crate::routes::RequestResult;
use crate::utils::date_utils::time;
/// Create a new administrator account
pub fn create(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn create(r: &mut HttpRequestHandler) -> RequestResult {
let email = r.post_email("mail")?;
let name = r.post_string_opt("name", 3, true)?;
@ -34,7 +34,7 @@ pub fn create(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Get admin auth options
pub fn get_auth_options(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn get_auth_options(r: &mut HttpRequestHandler) -> RequestResult {
let mail = r.post_email("mail")?;
let admin = admin_account_helper::find_admin_by_email(&mail)?;
let keys = admin_account_key_helper::get_admin_keys(admin.id)?;
@ -43,7 +43,7 @@ pub fn get_auth_options(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Login admin using a reset token
pub fn auth_with_reset_token(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn auth_with_reset_token(r: &mut HttpRequestHandler) -> RequestResult {
let reset_token = r.post_string("token")?;
let admin = admin_account_helper::find_admin_by_email(&r.post_email("mail")?)?;
@ -65,19 +65,19 @@ pub fn auth_with_reset_token(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Sign out current admin
pub fn sign_out(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn sign_out(r: &mut HttpRequestHandler) -> RequestResult {
admin_access_token_helper::destroy(r.admin_id()?)?;
r.ok()
}
/// Get current admin ID
pub fn get_admin_id(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn get_admin_id(r: &mut HttpRequestHandler) -> RequestResult {
r.set_response(AdminIDAPI::new(r.admin_id()?))
}
/// Get and return the list of administrators
pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
let list = admin_account_helper::get_list()?
.iter()
.map(AdminInfoAPI::new)
@ -87,7 +87,7 @@ pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Get current admin information
pub fn get_admin_info(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn get_admin_info(r: &mut HttpRequestHandler) -> RequestResult {
let admin = match r.has_post_parameter("id") {
false => admin_account_helper::find_admin_by_id(r.admin_id()?)?,
true => {
@ -100,7 +100,7 @@ pub fn get_admin_info(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Update general settings
pub fn update_general_settings(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn update_general_settings(r: &mut HttpRequestHandler) -> RequestResult {
let admin_id = r.post_admin_id("id")?;
let new_name = r.post_string("name")?;
let new_email = r.post_email("email")?;
@ -122,7 +122,7 @@ pub fn update_general_settings(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Generate access reset token
pub fn generate_reset_token(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn generate_reset_token(r: &mut HttpRequestHandler) -> RequestResult {
let admin_id = r.post_admin_id("id")?;
if admin_id != r.admin_id()? {

View File

@ -38,7 +38,7 @@ impl HttpRequestHandler {
}
/// Get an admin keys
pub fn get_keys_list(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn get_keys_list(r: &mut HttpRequestHandler) -> RequestResult {
let admin_id = r.post_admin_id("id")?;
if admin_id != r.admin_id()? {
@ -52,7 +52,7 @@ pub fn get_keys_list(r: &mut HttpRequestHandler) -> RequestResult {
/// Generate a challenge to register a new key
pub fn challenge_register_key(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn challenge_register_key(r: &mut HttpRequestHandler) -> RequestResult {
let wan = get_wan();
let (res, state) = wan.generate_challenge_register(&r.admin_id()?.id_str(), false)?;
@ -63,7 +63,7 @@ pub fn challenge_register_key(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Register key
pub fn register_key(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn register_key(r: &mut HttpRequestHandler) -> RequestResult {
let key_name = r.post_string("name")?;
let key_password = r.post_string("password")?;
@ -89,7 +89,7 @@ pub fn register_key(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Delete an admin auth key
pub fn delete_auth_key(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn delete_auth_key(r: &mut HttpRequestHandler) -> RequestResult {
let admin_id = r.post_admin_id("adminID")?;
let key_id = r.post_u64("keyID")?;
@ -116,7 +116,7 @@ pub fn delete_auth_key(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Generate a challenge to authenticate with a security key
pub fn challenge_auth_with_key(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn challenge_auth_with_key(r: &mut HttpRequestHandler) -> RequestResult {
let key = r.post_admin_auth_key("mail", "key_id")?;
let (challenge_response, auth_state) =
@ -128,7 +128,7 @@ pub fn challenge_auth_with_key(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Authenticate a user with a security key
pub fn auth_with_key(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn auth_with_key(r: &mut HttpRequestHandler) -> RequestResult {
let key = r.post_admin_auth_key("mail", "key_id")?;
let credentials = r.post_auth_public_key_credential("credential")?;

View File

@ -10,7 +10,7 @@ use crate::constants::admin::AdminRole;
use crate::api_data::admin::admin_log_api::AdminLogAPI;
/// Get the list of logs of the user
pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
let logs = match admin_roles_helper::has_role(r.admin_id()?, AdminRole::ACCESS_ALL_ADMINS_LOGS)? {
true => admin_log_helper::get_all_admin_logs(),
false => admin_log_helper::get_admin_logs(r.admin_id()?)

View File

@ -12,7 +12,7 @@ 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 {
pub async fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
let res = ADMIN_ROLES_LIST.iter()
.map(AdminRoleDetailsAPI::new)
.collect::<Vec<AdminRoleDetailsAPI>>();
@ -21,7 +21,7 @@ pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Toggle the status of a role for an admin
pub fn toggle(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn toggle(r: &mut HttpRequestHandler) -> RequestResult {
let admin_id = r.post_admin_id("adminID")?;
let enable = r.post_bool("enable")?;
let role_str = r.post_string("role")?;

View File

@ -15,7 +15,7 @@ use crate::helpers::admin_log_helper::log_admin_action;
use crate::routes::RequestResult;
/// Search for user
pub fn search(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn search(r: &mut HttpRequestHandler) -> RequestResult {
r.check_admin_has_role(AdminRole::MANAGE_USERS)?;
let name = r.post_string_opt("name", 0, true)?;
@ -27,7 +27,7 @@ pub fn search(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Get information about a single user
pub fn get_single(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn get_single(r: &mut HttpRequestHandler) -> RequestResult {
r.check_admin_has_role(AdminRole::MANAGE_USERS)?;
let user_id = r.post_user_id("user_id")?;
@ -40,7 +40,7 @@ pub fn get_single(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Change the email address of a Comunic user
pub fn change_email_address(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn change_email_address(r: &mut HttpRequestHandler) -> RequestResult {
r.check_admin_has_role(AdminRole::MANAGE_USERS)?;
let user_id = r.post_user_id("user_id")?;
@ -67,7 +67,7 @@ pub fn change_email_address(r: &mut HttpRequestHandler) -> RequestResult {
}
/// Create a password reset link for a Comunic user
pub fn create_password_reset_link(r: &mut HttpRequestHandler) -> RequestResult {
pub async fn create_password_reset_link(r: &mut HttpRequestHandler) -> RequestResult {
r.check_admin_has_role(AdminRole::MANAGE_USERS)?;
let user_id = r.post_user_id("user_id")?;