diff options
Diffstat (limited to 'gn3/auth/authorisation/users')
| -rw-r--r-- | gn3/auth/authorisation/users/models.py | 19 | ||||
| -rw-r--r-- | gn3/auth/authorisation/users/views.py | 9 |
2 files changed, 28 insertions, 0 deletions
diff --git a/gn3/auth/authorisation/users/models.py b/gn3/auth/authorisation/users/models.py new file mode 100644 index 0000000..844a8a9 --- /dev/null +++ b/gn3/auth/authorisation/users/models.py @@ -0,0 +1,19 @@ +"""Functions for acting on users.""" +import uuid + +from gn3.auth import db +from gn3.auth.authorisation.checks import authorised_p + +from gn3.auth.authentication.users import User + +@authorised_p( + ("system:user:list",), + "You do not have the appropriate privileges to list users.", + oauth2_scope="profile user") +def list_users(conn: db.DbConnection) -> tuple[User, ...]: + """List out all users.""" + with db.cursor(conn) as cursor: + cursor.execute("SELECT * FROM users") + return tuple( + User(uuid.UUID(row["user_id"]), row["email"], row["name"]) + for row in cursor.fetchall()) diff --git a/gn3/auth/authorisation/users/views.py b/gn3/auth/authorisation/users/views.py index 2219440..5015cac 100644 --- a/gn3/auth/authorisation/users/views.py +++ b/gn3/auth/authorisation/users/views.py @@ -11,6 +11,7 @@ from gn3.auth import db from gn3.auth.dictify import dictify from gn3.auth.db_utils import with_db_connection +from ..users.models import list_users from ..groups.models import user_group as _user_group from ..resources.models import user_resources as _user_resources from ..roles.models import assign_default_roles, user_roles as _user_roles @@ -158,3 +159,11 @@ def user_join_request_exists(): with require_oauth.acquire("profile group") as the_token: return jsonify(with_db_connection(partial( __request_exists__, user=the_token.user))) + +@users.route("/list", methods=["GET"]) +@require_oauth("profile user") +def list_all_users() -> Response: + """List all the users.""" + with require_oauth.acquire("profile group") as _the_token: + return jsonify(tuple( + dictify(user) for user in with_db_connection(list_users))) |
