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