diff options
author | Frederick Muriuki Muriithi | 2023-01-04 06:37:32 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2023-01-04 06:44:26 +0300 |
commit | 7ea2f83c505c792a36d17cc0fc13301a885fb732 (patch) | |
tree | 68a51ddc2cbf7668e23c7e881dd83826db8d0757 /gn3 | |
parent | dcd09e820ff142a8ca932363a0b67b72182d355c (diff) | |
download | genenetwork3-7ea2f83c505c792a36d17cc0fc13301a885fb732.tar.gz |
auth: return group info as part of user details
* gn3/app.py: import blueprint from authorisation views inorder to get all
endpoints
* gn3/auth/authentication/oauth2/views.py: remove the `/user` endpoint
* gn3/auth/authorisation/views.py: add the `/user` endpoint and add the group
information to the user details.
Diffstat (limited to 'gn3')
-rw-r--r-- | gn3/app.py | 2 | ||||
-rw-r--r-- | gn3/auth/authentication/oauth2/views.py | 15 | ||||
-rw-r--r-- | gn3/auth/authorisation/views.py | 17 |
3 files changed, 19 insertions, 15 deletions
@@ -19,7 +19,7 @@ from gn3.api.async_commands import async_commands from gn3.api.menu import menu from gn3.api.search import search from gn3.api.metadata import metadata -from gn3.auth.authentication.oauth2.views import oauth2 +from gn3.auth.authorisation.views import oauth2 from gn3.auth.authentication.oauth2.server import setup_oauth2_server diff --git a/gn3/auth/authentication/oauth2/views.py b/gn3/auth/authentication/oauth2/views.py index 7d0d7dd..58fa6d4 100644 --- a/gn3/auth/authentication/oauth2/views.py +++ b/gn3/auth/authentication/oauth2/views.py @@ -1,9 +1,8 @@ """Endpoints for the oauth2 server""" import uuid -from flask import jsonify, Blueprint, current_app as app +from flask import Blueprint, current_app as app -from .resource_server import require_oauth from .endpoints.revocation import RevocationEndpoint from .endpoints.introspection import IntrospectionEndpoint @@ -41,15 +40,3 @@ def introspect_token(): """Provide introspection information for the token.""" return app.config["OAUTH2_SERVER"].create_endpoint_response( IntrospectionEndpoint.ENDPOINT_NAME) - -@oauth2.route("/user") -@require_oauth("profile") -def user_details(): - """Return user's details.""" - with require_oauth.acquire("profile") as the_token: - user = the_token.user - return jsonify({ - "user_id": user.user_id, - "email": user.email, - "name": user.name - }) diff --git a/gn3/auth/authorisation/views.py b/gn3/auth/authorisation/views.py index 2a419af..3e9d9b9 100644 --- a/gn3/auth/authorisation/views.py +++ b/gn3/auth/authorisation/views.py @@ -2,10 +2,27 @@ from flask import jsonify, current_app from gn3.auth import db +from .groups import user_group from .roles import user_roles as _user_roles from ..authentication.oauth2.views import oauth2 from ..authentication.oauth2.resource_server import require_oauth +@oauth2.route("/user") +@require_oauth("profile") +def user_details(): + """Return user's details.""" + with require_oauth.acquire("profile") as the_token: + user = the_token.user + with db.connection(current_app.config["AUTH_DB"]) as conn, db.cursor(conn) as cursor: + group = user_group(cursor, user) + + return jsonify({ + "user_id": user.user_id, + "email": user.email, + "name": user.name, + "group": group.maybe(False, lambda grp: grp) + }) + @oauth2.route("/user-roles") @require_oauth def user_roles(): |