Skip to main content

minco_contract/
authorization.rs

1/// One representable `OpenAPI` Security Requirement alternative.
2///
3/// Every scope in an alternative is required. Separate alternatives are `ORed`.
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub struct ContractAuthorizationAlternative {
6    pub scopes: &'static [&'static str],
7}
8
9impl ContractAuthorizationAlternative {
10    #[must_use]
11    pub const fn new(scopes: &'static [&'static str]) -> Self {
12        Self { scopes }
13    }
14}
15
16/// Additive coarse authorization metadata generated separately from operations.
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
18pub struct ContractAuthorizationPolicy {
19    pub operation_id: &'static str,
20    pub anonymous: bool,
21    pub permissions: &'static [&'static str],
22    pub alternatives: &'static [ContractAuthorizationAlternative],
23}
24
25impl ContractAuthorizationPolicy {
26    #[must_use]
27    pub const fn new(
28        operation_id: &'static str,
29        anonymous: bool,
30        permissions: &'static [&'static str],
31        alternatives: &'static [ContractAuthorizationAlternative],
32    ) -> Self {
33        Self {
34            operation_id,
35            anonymous,
36            permissions,
37            alternatives,
38        }
39    }
40}