aboutsummaryrefslogtreecommitdiff
path: root/gn_auth/auth/authorisation/resources/system/views.py
blob: b0d40c21e08ce4226baa38e634a8dd6344a32eef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"""Views relating to `System` resource(s)."""
from dataclasses import asdict
from flask import jsonify, Blueprint

from gn_auth.auth.db.sqlite3 import with_db_connection

from gn_auth.auth.authentication.oauth2.resource_server import require_oauth

from .models import user_roles_on_system

system = Blueprint("system", __name__)

@system.route("/roles")
def system_roles():
    """Get the roles that a user has that act on the system."""
    with require_oauth.acquire("profile group") as the_token:
        roles = with_db_connection(
            lambda conn: user_roles_on_system(conn, the_token.user))
        return jsonify(tuple(asdict(role) for role in roles))