blob: a9b337f7fbae3b02ae7f88be7aedb1855fa0a657 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
"""The views/routes for the `gn3.auth.authorisation.roles` package."""
import uuid
from flask import jsonify, Response, Blueprint, current_app
from ...dictify import dictify
from ...db import sqlite3 as db
from .models import user_role
from ...authentication.oauth2.resource_server import require_oauth
roles = Blueprint("roles", __name__)
@roles.route("/view/<uuid:role_id>", methods=["GET"])
@require_oauth("profile role")
def view_role(role_id: uuid.UUID) -> Response:
"""Retrieve a user role with id `role_id`"""
def __error__(exc: Exception):
raise exc
with require_oauth.acquire("profile role") as the_token:
db_uri = current_app.config["AUTH_DB"]
with db.connection(db_uri) as conn:
the_role = user_role(conn, the_token.user, role_id)
return the_role.either(
__error__, lambda a_role: jsonify((dictify(a_role[0]), str(a_role[1]))))
|