Source code for tahrir.endpoints.admin.authorizations

from flask import abort, current_app, g, jsonify, request

from ...app import csrf, oidc
from ...utils.user import need_access_root, need_access_user
from . import blueprint as bp


[docs] @bp.route("/api/admin/authorization", methods=["POST"]) @csrf.exempt @oidc.accept_token() @need_access_user @need_access_root def add_authorization(): """Endpoint to add authorization and allow someone to admin a certain badge""" data = request.get_json() if not data: return abort(400, "No details provided") required_fields = ["badge_id", "user"] for field in required_fields: if not data.get(field): return abort(400, f"No detail provided for {field!r}") # ONE SHOULD NOT FEEL THE NEED OF USING THE EMAIL ADDRESS HERE # THIS WORKAROUND IS TEMPORARY AND TAHRIR-API WOULD BE CHANGED TO ACCEPT JUST USERNAME result = g.tahrirdb.add_authorization( badge_id=data.get(required_fields[0]), person_email=f"{data.get(required_fields[1])}@{current_app.config['TAHRIR_EMAIL_DOMAIN']}", ) if not result: return abort(400, "Failed to add authorization") return jsonify( { "message": ( f"Badge {data.get(required_fields[0])!r} " f"authorized to {data.get(required_fields[1])!r}" ) } ), 201
[docs] @bp.route("/api/admin/authorization", methods=["DELETE"]) @csrf.exempt @oidc.accept_token() @need_access_user @need_access_root def remove_authorization(): """Endpoint to remove authorization and revoke someone to admin a certain badge""" data = request.get_json() if not data: return abort(400, "No details provided") required_fields = ["badge_id", "user"] for field in required_fields: if not data.get(field): return abort(400, f"No detail provided for {field!r}") # ONE SHOULD NOT FEEL THE NEED OF USING THE EMAIL ADDRESS HERE # THIS WORKAROUND IS TEMPORARY AND TAHRIR-API WOULD BE CHANGED TO ACCEPT JUST USERNAME result = g.tahrirdb.delete_authorization( badge_id=data.get(required_fields[0]), person_email=f"{data.get(required_fields[1])}@{current_app.config['TAHRIR_EMAIL_DOMAIN']}", ) if not result: return abort(404, "Authorization not found or failed to remove") return jsonify( { "message": ( f"Badge {data.get(required_fields[0])!r} " f"authorization revoked from {data.get(required_fields[1])!r}" ) } ), 200