in fxa/_utils.py [0:0]
def scope_matches(provided, required):
"""Check that required scopes match the ones provided. This is used during
token verification to raise errors if expected scopes are not met.
:note:
The rules for parsing and matching scopes in FxA are documented at
https://github.com/mozilla/fxa-oauth-server/blob/master/docs/scopes.md
:param provided: list of scopes provided for the current token.
:param required: the scope required (e.g. by the application).
:returns: ``True`` if all required scopes are provided, ``False`` if not.
"""
if isinstance(provided, str):
raise ValueError("Provided scopes must be a list, not a single string")
if not isinstance(required, (list, tuple)):
required = [required]
for req in required:
if not any(_match_single_scope(prov, req) for prov in provided):
return False
return True