from functools import wraps from .logger import getDebugLogger DEBUG = getDebugLogger() def login_required(**kwargs): import geruecht.controller.accesTokenController as ac from geruecht.model import BAR, USER, MONEY, GASTRO from flask import request, jsonify accessController = ac.AccesTokenController() groups = [USER, BAR, GASTRO, MONEY] if "groups" in kwargs: groups = kwargs["groups"] DEBUG.debug("groups are {{}}".format(groups)) def real_decorator(func): @wraps(func) def wrapper(*args, **kwargs): token = request.headers.get('Token') DEBUG.debug("token is {{}}".format(token)) accToken = accessController.validateAccessToken(token, groups) DEBUG.debug("accToken is {{}}".format(accToken)) kwargs['accToken'] = accToken if accToken: DEBUG.debug("token {{}} is valid".format(token)) return func(*args, **kwargs) else: DEBUG.warning("token {{}} is not valid".format(token)) return jsonify({"error": "error", "message": "permission denied"}), 401 return wrapper return real_decorator