findig.tools.protector.scopeutil — tools for working with auth scopes¶
These functions are used protectors to implement scoping.
-
findig.tools.protector.scopeutil.check_encapsulates(root, child, sep='/')[source]¶ Check that one scope item encapsulates of another.
A
scopeitem encapsulates when it is a super-scope of the other, and when its permissions are a superset of the other’s permissions.This is used to implement sub-scopes, where permissions granted on a broad scope can be used to imply permissions for a sub-scope. By default, sub-scopes are denoted by a preceeding ‘/’.
For example, a scope permission if
user+ris granted to an agent, then that agent is also implied to have been granteduser/emails+r,user/friends+rand so on.Parameters: - root – A super-scope
- child – A potential sub-scope
- sep – The separator that is used to denote sub-scopes.
-
findig.tools.protector.scopeutil.compress_scope_items(scopes, default_mode='r')[source]¶ Return a set of equivalent scope items that may be smaller in size.
Input scope items must be a normalized set of scope items.
-
findig.tools.protector.scopeutil.normalize_scope_items(scopes, default_mode='r', raise_err=True)[source]¶ Return a set of scope items that have been normalized.
A normalized set of scope items is one where every item is in the format:
norm_scope ::=
scope_name+permissionInput scope items are assumed to be ‘r’ by default. Example, the scope item
userwill normalize touser+r.Input scope items that contain more than one permission are expanded to multiple scope items. For example the scope item
user+udis expanded to (user+u,user+d).Note that permissions are atomic, and none implies another. For example,
user+uwill expand touser+uand NOT (user+r,user+u).Parameters: - scopes – A list of scope items.
- default_mode – The permission that should be assumed if one is omitted.
- raise_err – If
True, malformed scopes will raise aValueError. Otherwise they are omitted.
-
findig.tools.protector.scopeutil.ANY= {'$^&#THISISGARBAGE#*@&@#$*@$&DFDF#&#@&@&##*&@DHJGDJH#@&*^@#*+crud'}¶ A special scope item that implicitly encapsulates all other scope items