From 8d201a29ae7386e4395f50e13922225c1b639638 Mon Sep 17 00:00:00 2001
From: Patrick Jentsch <pjentsch@sfb1288inf-Laptop.fritz.box>
Date: Wed, 20 May 2020 09:36:59 +0200
Subject: [PATCH] Proper socketio_login/admin_required decorators

---
 app/decorators.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/app/decorators.py b/app/decorators.py
index 0a361424..5fa664e0 100644
--- a/app/decorators.py
+++ b/app/decorators.py
@@ -1,4 +1,4 @@
-from flask import abort, current_app
+from flask import abort, current_app, request
 from flask_login import current_user
 from flask_socketio import disconnect
 from functools import wraps
@@ -39,15 +39,17 @@ def socketio_admin_required(f):
         if current_user.is_administrator:
             return f(*args, **kwargs)
         else:
-            disconnect()
+            response = {'code': 401, 'desc': 'Unauthorized'}
+            socketio.emit(request.event['message'], response, room=request.sid)
     return wrapped
 
 
 def socketio_login_required(f):
     @wraps(f)
     def wrapped(*args, **kwargs):
-        if not current_user.is_authenticated:
-            disconnect()
-        else:
+        if current_user.is_authenticated:
             return f(*args, **kwargs)
+        else:
+            response = {'code': 401, 'desc': 'Unauthorized'}
+            socketio.emit(request.event['message'], response, room=request.sid)
     return wrapped
-- 
GitLab