diff --git a/SAS/TMSS/backend/services/websocket/lib/websocket_service.py b/SAS/TMSS/backend/services/websocket/lib/websocket_service.py index 8a9736ade3191dbf056d8ea52d8b19966bb3e7ec..6612423a5707bf0a968ad2b65f52f18f37d81074 100644 --- a/SAS/TMSS/backend/services/websocket/lib/websocket_service.py +++ b/SAS/TMSS/backend/services/websocket/lib/websocket_service.py @@ -133,14 +133,18 @@ class TMSSEventMessageHandlerForWebsocket(TMSSEventMessageHandler): from lofar.sas.tmss.tmss.tmssapp.models import ProjectRole auth_clients = [] + logger.info('Checking which of these users should receive websocket update for obj=%s: %s' % ([ws.user for ws in list(self._ws_server.connections.values())], obj)) for ws in list(self._ws_server.connections.values()): if ws.authenticated: # Check user permissions for the object user = User.objects.get(username=ws.user) if user.is_superuser: + logger.info('User=%s is superuser and will receive websocket update for obj=%s' % (user, obj)) auth_clients.append(ws) elif user.has_perm("tmssapp.view_%s" % type(obj).__name__.lower()): + logger.info('User=%s has permission=%s and will receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj)) auth_clients.append(ws) else: + logger.info('User=%s has no permission=%s, checking for project-based permission to receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj)) # project-based permission permitted_project_roles = get_project_roles_with_permission(type(obj).__name__.lower(), 'GET') user_project_roles = get_project_roles_for_user(user) @@ -150,6 +154,10 @@ class TMSSEventMessageHandlerForWebsocket(TMSSEventMessageHandler): if project_role['project'].lower() == related_project.name.lower() and \ ProjectRole.objects.get(value=project_role['role']) in permitted_project_roles: auth_clients.append(ws) + logger.info("User=%s has project-based permission for project=%s and will receive websocket update for obj=%s" % (user, project_role['project'].lower(), obj)) + break + else: + logger.info("%s websocket is not authenticated and will not receive websocket update for obj=%s" % (ws.user, obj)) return auth_clients def _broadcast_notify_to_clients_websocket(self, msg, clients):