43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
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
|