mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-06-20 08:25:16 +00:00
Can create auth challenge
This commit is contained in:
@ -8,14 +8,34 @@ use crate::api_data::admin::admin_auth_options::AdminAuthOptions;
|
||||
use crate::api_data::admin::admin_auth_success::AdminAuthSuccess;
|
||||
use crate::api_data::admin::admin_id_api::AdminIDAPI;
|
||||
use crate::api_data::admin::admin_info_api::AdminInfoAPI;
|
||||
use crate::data::admin::NewAdminGeneralSettings;
|
||||
use crate::data::admin::{AdminKey, NewAdminGeneralSettings};
|
||||
use crate::data::base_request_handler::BaseRequestHandler;
|
||||
use crate::data::error::Res;
|
||||
use crate::data::http_request_handler::HttpRequestHandler;
|
||||
use crate::data::webauthn_config::get_wan;
|
||||
use crate::helpers::{admin_access_token_helper, admin_account_helper, admin_account_key_helper, admin_key_registration_challenges_helper};
|
||||
use crate::helpers::{admin_access_token_helper, admin_account_helper, admin_account_key_helper, admin_key_authentication_challenges_helper, admin_key_registration_challenges_helper};
|
||||
use crate::routes::RequestResult;
|
||||
use crate::utils::date_utils::time;
|
||||
|
||||
impl HttpRequestHandler {
|
||||
pub fn post_admin_auth_key(&mut self, name_mail: &str, name_key_id: &str) -> Res<AdminKey> {
|
||||
let mail = self.post_string(name_mail)?;
|
||||
let key_id = self.post_u64(name_key_id)?;
|
||||
|
||||
let admin = admin_account_helper::find_admin_by_email(&mail)?;
|
||||
let keys = admin_account_key_helper::get_admin_keys(admin.id)?;
|
||||
|
||||
let key = keys.into_iter()
|
||||
.filter(|k| k.id == key_id)
|
||||
.next();
|
||||
|
||||
match key {
|
||||
Some(key) => Ok(key),
|
||||
None => Err(self.bad_request("The key is not associated with this account!".to_string()).unwrap_err())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Get admin auth options
|
||||
pub fn get_auth_options(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let mail = r.post_email("mail")?;
|
||||
@ -122,4 +142,16 @@ pub fn register_key(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
admin_account_key_helper::add_key(r.admin_id()?, &name, key)?;
|
||||
|
||||
r.ok()
|
||||
}
|
||||
|
||||
/// Generate a challenge to authenticate with a security key
|
||||
pub fn challenge_auth_with_key(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let key = r.post_admin_auth_key("mail", "key_id")?;
|
||||
|
||||
let (challenge_response, auth_state) =
|
||||
get_wan().generate_challenge_authenticate(vec![key.key], None)?;
|
||||
|
||||
admin_key_authentication_challenges_helper::set(key.id, auth_state)?;
|
||||
|
||||
r.set_response(challenge_response)
|
||||
}
|
Reference in New Issue
Block a user