Skip to main content

origin_satisfies

Function origin_satisfies 

Source
pub fn origin_satisfies(origin: &CommandOrigin, policy: &CommandPolicy) -> bool
Expand description

Pure check of I12: does origin satisfy policy?

Two independent gates, both of which must pass:

  1. Risk. Anything above RiskClass::ReversibleLowRisk needs a trusted origin (CommandOrigin::is_trusted).
  2. Confirmation. The origin must be the specific authorization policy.confirmation names (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));