import flask from flask import Blueprint, render_template from flask import redirect, url_for from webargs import fields from webargs.flaskparser import use_kwargs from atlas_um.auth import claims_required from atlas_um.auth.claims import Role from atlas_um.auth.utils import current_user from atlas_um.extensions import redis from atlas_um.pgdb import pgdb, ClaimValue common = Blueprint("common", __name__) @common.route("/", methods=["GET"]) def home(): if ( current_user.is_authenticated and Role(Role.Values.admin) in current_user.claims ): return redirect(url_for("dna_accounts.list")) elif ( current_user.is_authenticated and Role(Role.Values.developer) in current_user.claims ): return redirect(url_for("applications.list")) elif ( current_user.is_authenticated and Role(Role.Values.manager) in current_user.claims ): return redirect(url_for("dna_accounts.list")) return redirect(url_for("common.userinfo")) @common.route("/userinfo", methods=["GET"]) def userinfo(): return render_template( "userinfo.html", user=current_user, resource_groups=current_user.dna_account.enabled_resource_groups, ) @common.route("/health", methods=["GET"]) def health(): pgdb.session.execute("SELECT 1").all() redis.ping() return "" @common.route("/claim_value_children/", methods=["GET"]) @claims_required([Role(Role.Values.admin), Role(Role.Values.manager)]) @use_kwargs( { "dna_account_id": fields.Str(load_default=""), }, location="query", ) def claim_value_children(claim_value_id, dna_account_id): claim_value = ClaimValue.query.get_or_404(claim_value_id) if dna_account_id: children = ClaimValue.query.children_by_dna_account_id_claim_value_id( dna_account_id, claim_value_id ) else: children = claim_value.children return flask.render_template( "common/children_modal_content.html", claim_value=claim_value, children=children, )