diff options
author | Frederick Muriuki Muriithi | 2025-06-09 12:50:44 -0500 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2025-06-09 12:50:44 -0500 |
commit | 183076a4ae6b7d0f7e8c5369111ae79e5cad04ba (patch) | |
tree | 70c43a2b4a1a5ac3f762acc71d1602b9023f9127 | |
parent | 09b7fd69c6d71b37403de4bb0d97f547db0b9fca (diff) | |
download | gn-auth-183076a4ae6b7d0f7e8c5369111ae79e5cad04ba.tar.gz |
Add function to fetch the wrapper resource for a specific group.
-rw-r--r-- | gn_auth/auth/authorisation/resources/groups/models.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/gn_auth/auth/authorisation/resources/groups/models.py b/gn_auth/auth/authorisation/resources/groups/models.py index fa25594..29dcc89 100644 --- a/gn_auth/auth/authorisation/resources/groups/models.py +++ b/gn_auth/auth/authorisation/resources/groups/models.py @@ -16,8 +16,10 @@ from gn_auth.auth.authentication.users import User, user_by_id from gn_auth.auth.authorisation.checks import authorised_p from gn_auth.auth.authorisation.privileges import Privilege -from gn_auth.auth.authorisation.resources.base import Resource from gn_auth.auth.authorisation.resources.errors import MissingGroupError +from gn_auth.auth.authorisation.resources.base import ( + Resource, + resource_from_dbrow) from gn_auth.auth.errors import ( NotFoundError, AuthorisationError, InconsistencyError) from gn_auth.auth.authorisation.roles.models import ( @@ -519,3 +521,24 @@ def admin_group(conn: db.DbConnection) -> Either: row["group_name"], json.loads(row["group_metadata"]))), cursor.fetchone()) + + +def group_resource(conn: db.DbConnection, group_id: UUID) -> Group: + """Retrieve the system resource.""" + with db.cursor(conn) as cursor: + cursor.execute( + "SELECT group_resources.group_id, resource_categories.*, " + "resources.resource_id, resources.resource_name, resources.public " + "FROM group_resources INNER JOIN resources " + "ON group_resources.resource_id=resources.resource_id " + "INNER JOIN resource_categories " + "ON resources.resource_category_id=resource_categories.resource_category_id " + "WHERE group_resources.group_id=? " + "AND resource_categories.resource_category_key='group'", + (str(group_id),)) + row = cursor.fetchone() + if row: + return resource_from_dbrow(row) + + raise NotFoundError("Could not find a resource for group with ID " + f"{group_id}") |