Struct oxide_auth::primitives::scope::Scope
[−]
[src]
pub struct Scope { /* fields omitted */ }Scope of a given grant or resource, a set of scope-tokens separated by spaces.
Scopes are interpreted as a conjunction of scope tokens, i.e. a scope is fulfilled if all of
its scope tokens are fulfilled. This induces a partial ordering on scopes where scope A
is less or equal than scope B if all scope tokens of A are also found in B. This can be
interpreted as the rule
A token with scope
Bis allowed to access a resource requiring scopeAiffA <= B
Example
let grant_scope = "some_scope other_scope".parse::<Scope>().unwrap(); let resource_scope = "some_scope".parse::<Scope>().unwrap(); let uncomparable = "some_scope third_scope".parse::<Scope>().unwrap(); // Holding a grant with `grant_scope` allows access to the resource since: assert!(resource_scope <= grant_scope); assert!(resource_scope.allow_access(&grant_scope)); // But holders would not be allowed to access another resource with scope `uncomparable`: assert!(!(uncomparable <= grant_scope)); assert!(!uncomparable.allow_access(&grant_scope)); // This would also not work the other way around: assert!(!(grant_scope <= uncomparable)); assert!(!grant_scope.allow_access(&uncomparable));
Scope-tokens are restricted to the following subset of ascii: - The character '!' - The character range '\x32' to '\x5b' which includes numbers and upper case letters - The character range '\x5d' to '\x7e' which includes lower case letters Individual scope-tokens are separated by spaces.
In particular, the characters '\x22' (") and '\x5c' (\) are not allowed.
Methods
impl Scope[src]
fn priviledged_to(&self, rhs: &Scope) -> bool[src]
Determines if this scope has enough privileges to access some resource requiring the scope
on the right side. This operation is equivalent to comparison via >=.
fn allow_access(&self, rhs: &Scope) -> bool[src]
Determines if a resouce protected by this scope should allow access to a token with the
grant on the right side. This operation is equivalent to comparison via <=.
Trait Implementations
impl PartialEq for Scope[src]
fn eq(&self, __arg_0: &Scope) -> bool[src]
This method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, __arg_0: &Scope) -> bool[src]
This method tests for !=.
impl Eq for Scope[src]
impl Clone for Scope[src]
fn clone(&self) -> Scope[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
Performs copy-assignment from source. Read more
impl Debug for Scope[src]
impl FromStr for Scope[src]
type Err = ParseScopeErr
The associated error which can be returned from parsing.
fn from_str(string: &str) -> Result<Scope, ParseScopeErr>[src]
Parses a string s to return a value of this type. Read more
impl Display for Scope[src]
fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error>[src]
Formats the value using the given formatter. Read more
impl PartialOrd for Scope[src]
fn partial_cmp(&self, rhs: &Self) -> Option<Ordering>[src]
This method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool1.0.0[src]
This method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool1.0.0[src]
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
fn gt(&self, other: &Rhs) -> bool1.0.0[src]
This method tests greater than (for self and other) and is used by the > operator. Read more
fn ge(&self, other: &Rhs) -> bool1.0.0[src]
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more