24 lines
873 B
Python
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
|