use crate::{
access::AccessError,
ops::{config::ConfigOps, ic::IcOps},
workflow::caller_authority::admission::CallerAdmissionWorkflow,
};
pub use crate::domain::policy::pure::caller_authority::{
CallerAdmissionTicket, CallerTargetTicket,
};
pub use crate::model::caller_authority::CallerAdmissionError;
pub fn admit(permission: &str) -> Result<CallerAdmissionTicket, AccessError> {
ConfigOps::with_caller_policy(|policy| {
CallerAdmissionWorkflow::admit(IcOps::msg_caller(), permission, policy)
})
.map_err(AccessError::Internal)?
.map_err(AccessError::CallerAuthority)
}
pub fn revalidate(ticket: &CallerAdmissionTicket) -> Result<(), AccessError> {
ConfigOps::with_caller_policy(|policy| CallerAdmissionWorkflow::revalidate(ticket, policy))
.map_err(AccessError::Internal)?
.map_err(AccessError::CallerAuthority)
}
pub fn select_target(
target: candid::Principal,
permission: &str,
) -> Result<CallerTargetTicket, AccessError> {
ConfigOps::with_caller_policy(|policy| {
CallerAdmissionWorkflow::select_target(target, permission, policy)
})
.map_err(AccessError::Internal)?
.map_err(AccessError::CallerAuthority)
}
pub fn revalidate_target(ticket: &CallerTargetTicket) -> Result<(), AccessError> {
ConfigOps::with_caller_policy(|policy| {
CallerAdmissionWorkflow::revalidate_target(ticket, policy)
})
.map_err(AccessError::Internal)?
.map_err(AccessError::CallerAuthority)
}