use super::AuthApi;
use crate::{
dto::{
auth::{
ActiveDelegationProofStatusResponse, DelegatedToken, DelegatedTokenGetRequest,
DelegatedTokenPrepareRequest, DelegatedTokenPrepareResponse,
InstallActiveDelegationProofRequest, InstallActiveDelegationProofResponse,
},
error::Error,
},
ops::{auth::AuthOps, ic::IcOps},
workflow::runtime::auth::RuntimeAuthWorkflow,
};
impl AuthApi {
pub async fn prepare_delegated_token(
request: DelegatedTokenPrepareRequest,
) -> Result<DelegatedTokenPrepareResponse, Error> {
Self::require_delegated_token_issuer_enabled()?;
RuntimeAuthWorkflow::prepare_delegated_token(request)
.await
.map_err(Self::map_auth_error)
}
pub fn get_delegated_token(request: DelegatedTokenGetRequest) -> Result<DelegatedToken, Error> {
Self::require_delegated_token_issuer_enabled()?;
AuthOps::get_delegated_token_issuer_proof(request.claims_hash, IcOps::msg_caller())
.map_err(Self::map_auth_error)
}
pub fn install_active_delegation_proof(
request: InstallActiveDelegationProofRequest,
) -> Result<InstallActiveDelegationProofResponse, Error> {
Self::require_delegated_token_issuer_enabled()?;
let active_proof =
AuthOps::install_active_delegation_proof(request.proof, IcOps::msg_caller())
.map_err(Self::map_auth_error)?;
Ok(InstallActiveDelegationProofResponse { active_proof })
}
pub fn active_delegation_proof_status() -> Result<ActiveDelegationProofStatusResponse, Error> {
Self::require_delegated_token_issuer_enabled()?;
Ok(AuthOps::active_delegation_proof_status(IcOps::now_nanos()))
}
}