Skip to content

Commit 19e3d7a

Browse files
🐛 Fix bug when notifying users based on wrong access rights (#8207)
1 parent 506ec7c commit 19e3d7a

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

services/web/server/src/simcore_service_webserver/projects/_groups_service.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,3 +252,20 @@ async def create_project_group_without_checking_permissions(
252252
write=write,
253253
delete=delete,
254254
)
255+
256+
257+
async def list_project_groups_by_project_without_checking_permissions(
258+
app: web.Application,
259+
*,
260+
project_id: ProjectID,
261+
) -> list[ProjectGroupGet]:
262+
project_groups_db: list[ProjectGroupGetDB] = (
263+
await _groups_repository.list_project_groups(app=app, project_id=project_id)
264+
)
265+
266+
project_groups_api: list[ProjectGroupGet] = [
267+
ProjectGroupGet.model_validate(group.model_dump())
268+
for group in project_groups_db
269+
]
270+
271+
return project_groups_api

services/web/server/src/simcore_service_webserver/projects/_projects_service.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import datetime
1313
import logging
1414
from collections import defaultdict
15-
from collections.abc import Generator, Iterable
15+
from collections.abc import Iterable
1616
from contextlib import suppress
1717
from decimal import Decimal
1818
from pprint import pformat
@@ -130,6 +130,7 @@
130130
from ..workspaces import _workspaces_repository as workspaces_workspaces_repository
131131
from . import (
132132
_crud_api_delete,
133+
_groups_service,
133134
_nodes_service,
134135
_projects_nodes_repository,
135136
_projects_repository,
@@ -2107,9 +2108,13 @@ async def notify_project_state_update(
21072108
message=message,
21082109
)
21092110
else:
2110-
rooms_to_notify: Generator[GroupID, None, None] = (
2111-
gid for gid, rights in project["accessRights"].items() if rights["read"]
2111+
project_group_get_list = await _groups_service.list_project_groups_by_project_without_checking_permissions(
2112+
app, project_id=project["uuid"]
21122113
)
2114+
2115+
rooms_to_notify = [
2116+
item.gid for item in project_group_get_list if item.read is True
2117+
]
21132118
for room in rooms_to_notify:
21142119
await send_message_to_standard_group(app, group_id=room, message=message)
21152120

@@ -2123,9 +2128,10 @@ async def notify_project_node_update(
21232128
if await is_project_hidden(app, ProjectID(project["uuid"])):
21242129
return
21252130

2126-
rooms_to_notify: list[GroupID] = [
2127-
gid for gid, rights in project["accessRights"].items() if rights["read"]
2128-
]
2131+
project_group_get_list = await _groups_service.list_project_groups_by_project_without_checking_permissions(
2132+
app, project_id=project["uuid"]
2133+
)
2134+
rooms_to_notify = [item.gid for item in project_group_get_list if item.read is True]
21292135

21302136
message = SocketMessageDict(
21312137
event_type=SOCKET_IO_NODE_UPDATED_EVENT,

0 commit comments

Comments
 (0)