Replace the default function decorators with new socketio specific ones

This commit is contained in:
Patrick Jentsch
2020-03-26 16:14:09 +01:00
parent 257600a2a8
commit eba6af3b1e
3 changed files with 38 additions and 24 deletions

View File

@@ -1,19 +1,34 @@
from functools import wraps
from flask import abort
from flask_login import current_user
from flask_socketio import disconnect
from .models import Permission
def permission_required(permission):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if not current_user.can(permission):
abort(403)
return f(*args, **kwargs)
return decorated_function
return decorator
def admin_required(f):
return permission_required(Permission.ADMIN)(f)
@wraps(f)
def wrapped(*args, **kwargs):
if not current_user.can(Permission.ADMIN):
abort(403)
return f(*args, **kwargs)
return wrapped
def socketio_login_required(f):
@wraps(f)
def wrapped(*args, **kwargs):
if not current_user.is_authenticated:
disconnect()
else:
return f(*args, **kwargs)
return wrapped
def socketio_admin_required(f):
@wraps(f)
def wrapped(*args, **kwargs):
if not current_user.can(Permission.ADMIN):
disconnect()
else:
return f(*args, **kwargs)
return wrapped