From 78eb3fd12e31d22b53c9cdf5b7b0299befd86be3 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Wed, 27 Sep 2023 09:46:58 +0300 Subject: Bug: Fix issue with viewing resources of type "group". --- gn_auth/auth/authorisation/resources/models.py | 3 ++- gn_auth/auth/authorisation/resources/views.py | 24 ++++++++++-------------- 2 files changed, 12 insertions(+), 15 deletions(-) (limited to 'gn_auth/auth/authorisation/resources') diff --git a/gn_auth/auth/authorisation/resources/models.py b/gn_auth/auth/authorisation/resources/models.py index a16ca16..bca2ff9 100644 --- a/gn_auth/auth/authorisation/resources/models.py +++ b/gn_auth/auth/authorisation/resources/models.py @@ -182,7 +182,8 @@ def resource_data(conn, resource, offset: int = 0, limit: Optional[int] = None) "mrna": mrna_resource_data, "genotype": genotype_resource_data, "phenotype": phenotype_resource_data, - "system": lambda *args: tuple() + "system": lambda *args: tuple(), + "group": lambda *args: tuple() } with db.cursor(conn) as cursor: return tuple( diff --git a/gn_auth/auth/authorisation/resources/views.py b/gn_auth/auth/authorisation/resources/views.py index f609303..de2fd6c 100644 --- a/gn_auth/auth/authorisation/resources/views.py +++ b/gn_auth/auth/authorisation/resources/views.py @@ -163,11 +163,9 @@ def resource_users(resource_id: uuid.UUID): user_id = uuid.UUID(row["user_id"]) user = users_n_roles.get(user_id, {}).get( "user", User(user_id, row["email"], row["name"])) - role = GroupRole( - uuid.UUID(row["group_role_id"]), - resource_owner(conn, resource), - Role(uuid.UUID(row["role_id"]), row["role_name"], - bool(int(row["user_editable"])), tuple())) + role = Role( + uuid.UUID(row["role_id"]), row["role_name"], + bool(int(row["user_editable"])), tuple()) return { **users_n_roles, user_id: { @@ -180,15 +178,13 @@ def resource_users(resource_id: uuid.UUID): } } cursor.execute( - "SELECT g.*, u.*, r.*, gr.group_role_id " - "FROM groups AS g INNER JOIN " - "group_users AS gu ON g.group_id=gu.group_id " - "INNER JOIN users AS u ON gu.user_id=u.user_id " - "INNER JOIN group_user_roles_on_resources AS guror " - "ON u.user_id=guror.user_id INNER JOIN roles AS r " - "ON guror.role_id=r.role_id " - "INNER JOIN group_roles AS gr ON r.role_id=gr.role_id " - "WHERE guror.resource_id=?", + "SELECT g.*, u.*, r.* " + "FROM groups AS g INNER JOIN group_users AS gu " + "ON g.group_id=gu.group_id INNER JOIN users AS u " + "ON gu.user_id=u.user_id INNER JOIN user_roles AS ur " + "ON u.user_id=ur.user_id INNER JOIN roles AS r " + "ON ur.role_id=r.role_id " + "WHERE ur.resource_id=?", (str(resource_id),)) return reduce(__organise_users_n_roles__, cursor.fetchall(), {}) raise AuthorisationError( -- cgit v1.2.3