Skip to content

Commit 153e9b2

Browse files
authored
Bugfix/allow reading groups anonymous user (#1615)
* add groups.read secutiry role * test that groups right are correctly setup
1 parent 32276c9 commit 153e9b2

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

services/web/server/src/simcore_service_webserver/groups_handlers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
# groups/ ------------------------------------------------------
2222
@login_required
23-
@permission_required("groups.*")
23+
@permission_required("groups.read")
2424
async def list_groups(request: web.Request):
2525
user_id = request[RQT_USERID_KEY]
2626
primary_group, user_groups, all_group = await groups_api.list_user_groups(
@@ -30,7 +30,7 @@ async def list_groups(request: web.Request):
3030

3131

3232
@login_required
33-
@permission_required("groups.*")
33+
@permission_required("groups.read")
3434
async def get_group(request: web.Request):
3535
user_id = request[RQT_USERID_KEY]
3636
gid = request.match_info["gid"]

services/web/server/src/simcore_service_webserver/security_roles.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"project.update",
2828
"storage.locations.*", # "storage.datcore.read"
2929
"storage.files.*",
30+
"groups.read",
3031
"project.open",
3132
"project.read", # "studies.user.read",
3233
# "studies.templates.read"

services/web/server/tests/unit/with_dbs/test_groups.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,9 @@ async def test_list_groups(
119119
assert str(url) == f"{PREFIX}"
120120

121121
resp = await client.get(url)
122-
data, error = await assert_status(resp, expected.ok)
122+
data, error = await assert_status(
123+
resp, expected.ok if user_role != UserRole.GUEST else web.HTTPOk
124+
)
123125

124126
if not error:
125127
assert isinstance(data, dict)
@@ -198,16 +200,20 @@ async def test_group_creation_workflow(client, logged_user, user_role, expected)
198200
assert str(url) == f"{PREFIX}"
199201

200202
resp = await client.get(url)
201-
data, error = await assert_status(resp, expected.ok)
202-
if not error:
203+
data, error = await assert_status(
204+
resp, expected.ok if user_role != UserRole.GUEST else web.HTTPOk
205+
)
206+
if not error and user_role != UserRole.GUEST:
203207
assert len(data["organizations"]) == 1
204208
assert data["organizations"][0] == assigned_group
205209

206210
# check getting one group
207211
url = client.app.router["get_group"].url_for(gid=str(assigned_group["gid"]))
208212
assert str(url) == f"{PREFIX}/{assigned_group['gid']}"
209213
resp = await client.get(url)
210-
data, error = await assert_status(resp, expected.ok)
214+
data, error = await assert_status(
215+
resp, expected.ok if user_role != UserRole.GUEST else web.HTTPNotFound
216+
)
211217
if not error:
212218
assert data == assigned_group
213219

@@ -226,7 +232,9 @@ async def test_group_creation_workflow(client, logged_user, user_role, expected)
226232
url = client.app.router["get_group"].url_for(gid=str(assigned_group["gid"]))
227233
assert str(url) == f"{PREFIX}/{assigned_group['gid']}"
228234
resp = await client.get(url)
229-
data, error = await assert_status(resp, expected.ok)
235+
data, error = await assert_status(
236+
resp, expected.ok if user_role != UserRole.GUEST else web.HTTPNotFound
237+
)
230238
if not error:
231239
_assert_group(data)
232240
assert data == assigned_group
@@ -249,7 +257,9 @@ async def test_group_creation_workflow(client, logged_user, user_role, expected)
249257
url = client.app.router["get_group"].url_for(gid=str(assigned_group["gid"]))
250258
assert str(url) == f"{PREFIX}/{assigned_group['gid']}"
251259
resp = await client.get(url)
252-
data, error = await assert_status(resp, expected.not_found)
260+
data, error = await assert_status(
261+
resp, expected.not_found if user_role != UserRole.GUEST else web.HTTPNotFound
262+
)
253263

254264

255265
@pytest.mark.parametrize(*standard_role_response())

0 commit comments

Comments
 (0)