flaschengeist/flaschengeist/system/decorator.py

24 lines
873 B
Python

from functools import wraps
from flask import request
from werkzeug.exceptions import Unauthorized
from flaschengeist import logger
from flaschengeist.system.controller import sessionController
def login_required(permissions=None):
def wrap(func):
@wraps(func)
def wrapped_f(*args, **kwargs):
token = list(filter(None, request.headers.get("Authorization").split(" ")))[-1]
access_token = sessionController.validate_token(token, request.user_agent, permissions)
if access_token:
kwargs["access_token"] = access_token
logger.debug("token {{ {} }} is valid".format(token))
return func(*args, **kwargs)
else:
logger.info("token {{ {} }} is not valid".format(token))
raise Unauthorized
return wrapped_f
return wrap