in modular_api/index.py [0:0]
def resolve_permissions(tracer, empty_cache=False):
def decorator(func):
def wrapper(*a, **ka):
# sleep(0.35) # for what?
user, password = request.auth or (None, None)
token = None
if not password: # not basic auth -> probably bearer
header = request.headers.get('Authorization')
token = token_from_auth_header(header) if header else None
try:
allowed_commands, user_meta = \
PERMISSION_SERVICE.authenticate_user(
username=user,
password=password,
token=token,
empty_cache=empty_cache
)
ka['allowed_commands'] = allowed_commands
ka['user_meta'] = user_meta
return func(*a, **ka)
except Exception as e:
_LOG.exception('Exception occurred resolving permissions')
_trace_id = get_trace_id(tracer=tracer)
# TODO sort out this trace id
code, content = build_exception_content(exception=e)
error_response = build_response(_trace_id=_trace_id,
http_code=code,
content=content)
return error_response
return wrapper
return decorator