Skip to content

Commit 84119ba

Browse files
matusdrobuliak66mrnicegyu11
authored andcommitted
🎨 The user can remove themselves from the project/workspace. (ITISFoundation#6415)
1 parent 2129de4 commit 84119ba

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

‎services/web/server/src/simcore_service_webserver/projects/_groups_api.py‎

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,19 +139,20 @@ async def delete_project_group(
139139
group_id: GroupID,
140140
product_name: ProductName,
141141
) -> None:
142-
await check_user_project_permission(
143-
app,
144-
project_id=project_id,
145-
user_id=user_id,
146-
product_name=product_name,
147-
permission="delete",
148-
)
142+
user: dict = await users_api.get_user(app, user_id=user_id)
143+
if user["primary_gid"] != group_id:
144+
await check_user_project_permission(
145+
app,
146+
project_id=project_id,
147+
user_id=user_id,
148+
product_name=product_name,
149+
permission="delete",
150+
)
149151

150152
project_db: ProjectDBAPI = app[APP_PROJECT_DBAPI]
151153
project = await project_db.get_project_db(project_id)
152154
project_owner_user: dict = await users_api.get_user(app, project.prj_owner)
153155
if project_owner_user["primary_gid"] == group_id:
154-
user: dict = await users_api.get_user(app, user_id)
155156
if user["primary_gid"] != project_owner_user["primary_gid"]:
156157
# Only the owner of the project can delete the owner group
157158
raise ProjectInvalidRightsError(

‎services/web/server/src/simcore_service_webserver/workspaces/_groups_api.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,15 @@ async def delete_workspace_group(
159159
group_id: GroupID,
160160
product_name: ProductName,
161161
) -> None:
162+
user: dict = await users_api.get_user(app, user_id=user_id)
162163
workspace: UserWorkspaceAccessRightsDB = await workspaces_db.get_workspace_for_user(
163164
app=app, user_id=user_id, workspace_id=workspace_id, product_name=product_name
164165
)
165-
if workspace.my_access_rights.delete is False:
166+
if user["primary_gid"] != group_id and workspace.my_access_rights.delete is False:
166167
raise WorkspaceAccessForbiddenError(
167168
reason=f"User does not have delete access to workspace {workspace_id}"
168169
)
169170
if workspace.owner_primary_gid == group_id:
170-
user: dict = await users_api.get_user(app, user_id)
171171
if user["primary_gid"] != workspace.owner_primary_gid:
172172
# Only the owner of the workspace can delete the owner group
173173
raise WorkspaceAccessForbiddenError(

0 commit comments

Comments
 (0)