pub fn origin_satisfies(origin: &CommandOrigin, policy: &CommandPolicy) -> boolExpand description
Pure check of I12: does origin satisfy policy?
Two independent gates, both of which must pass:
- Risk. Anything above
RiskClass::ReversibleLowRiskneeds a trusted origin (CommandOrigin::is_trusted). - Confirmation. The origin must be the specific authorization
policy.confirmationnames (CommandOrigin::satisfies_confirmation) — a click on a target selection card is not a confirmation of the command it disambiguates.
§Examples
use turnframe_core::prelude::*;
let picked_a_case = CommandOrigin::ConfirmedInteraction {
interaction_id: InteractionId::nil(),
payload_hash: Digest::of_bytes(b"payload"),
interaction_kind: InteractionKind::SelectTarget,
action_class: ActionClass::NoCommands,
channel: ResolutionChannel::Click,
};
let confirmed_the_send = CommandOrigin::ConfirmedInteraction {
interaction_id: InteractionId::nil(),
payload_hash: Digest::of_bytes(b"payload"),
interaction_kind: InteractionKind::ConfirmCommand,
action_class: ActionClass::ConfirmsCommands,
channel: ResolutionChannel::Click,
};
let send = CommandPolicy::conservative();
assert!(!origin_satisfies(&picked_a_case, &send));
assert!(origin_satisfies(&confirmed_the_send, &send));