diff options
author | Frederick Muriuki Muriithi | 2023-03-03 14:00:21 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2023-03-03 14:00:21 +0300 |
commit | ed2ff492bb782a44f0e8b3e6de33095e865f8151 (patch) | |
tree | ea140955feb44cca953955df8eb94fca86168eed /gn3/auth/authorisation/groups/views.py | |
parent | 94502a92d8ae3277b8dd07eb1117367821241913 (diff) | |
download | genenetwork3-ed2ff492bb782a44f0e8b3e6de33095e865f8151.tar.gz |
auth: Enable viewing group role details.
Diffstat (limited to 'gn3/auth/authorisation/groups/views.py')
-rw-r--r-- | gn3/auth/authorisation/groups/views.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/gn3/auth/authorisation/groups/views.py b/gn3/auth/authorisation/groups/views.py index 4da6781..8b7adef 100644 --- a/gn3/auth/authorisation/groups/views.py +++ b/gn3/auth/authorisation/groups/views.py @@ -15,8 +15,9 @@ from gn3.auth.db_utils import with_db_connection from .data import link_data_to_group, retrieve_ungrouped_data from .models import ( user_group, all_groups, DUMMY_GROUP, GroupRole, group_by_id, join_requests, - GroupCreationError, accept_reject_join_request, group_users as _group_users, - create_group as _create_group, create_group_role as _create_group_role) + group_role_by_id, GroupCreationError, accept_reject_join_request, + group_users as _group_users, create_group as _create_group, + create_group_role as _create_group_role) from ..roles.models import Role from ..checks import authorised_p @@ -302,3 +303,18 @@ def create_group_role(): return _create_group_role(conn, group, role_name, privileges) return jsonify(with_db_connection(__create__)) + +@groups.route("/role/<uuid:group_role_id>", methods=["GET"]) +def view_group_role(group_role_id: uuid.UUID): + """Return the details of the given role.""" + with require_oauth.acquire("profile group role") as the_token: + def __group_role__(conn: db.DbConnection) -> GroupRole: + with db.cursor(conn) as cursor: + group = user_group(cursor, the_token.user).maybe(#type: ignore[misc] + DUMMY_GROUP, lambda grp: grp) + + if group == DUMMY_GROUP: + raise AuthorisationError( + "A user without a group cannot view group roles.") + return group_role_by_id(conn, group, group_role_id) + return jsonify(dictify(with_db_connection(__group_role__))) |