import flask_jwt_extended from flask_jwt_extended import jwt_optional, get_jwt_identity from functools import wraps from backend import jwt_auth from backend.models.user_model import User def requires_permission_level(permission_level): def decorator(f): @wraps(f) def decorated_function(*args, **kwargs): if flask_jwt_extended.verify_jwt_in_request(): current_user_id = get_jwt_identity() user = User.get_by_identifier(current_user_id) if user is not None: if user.has_permission(permission_level): #for g in user.groups: # if g.permissions #TODO pass else: pass # return FALSE #if not session.get('email'): # return redirect(url_for('users.login')) #user = User.find_by_email(session['email']) #elif not user.allowed(access_level): # return redirect(url_for('users.profile', message="You do not have access to that page. Sorry!")) return f(*args, **kwargs) return decorated_function return decorator def require_jwt(): def decorator(f): @wraps(f) def decorated_function(*args, **kwargs): return jwt_auth.login_required(jwt_optional(f(*args, **kwargs))) return decorated_function return decorator