from flask import Blueprint, current_app, render_template, request, make_response from api.http_client import HttpClient from operations.get_instances import get_organization bp = Blueprint("main", __name__) def _mask(s): if not s or len(s) < 8: return "" return s[:4] + "*" * (len(s) - 8) + s[-4:] @bp.route("/", methods=["GET", "POST"]) def index(): env_token = current_app.config["NUBES_API_TOKEN"] user_token = request.cookies.get("token") or request.form.get("token") or "" active_token = user_token or env_token org = None error = None action = request.form.get("action", "") if action == "clear": resp = make_response(render_template("index.html", organization=None, error=None, env_token_masked=_mask(env_token), has_user_token=False)) resp.delete_cookie("token") return resp if action == "save": user_token = request.form.get("token", "") active_token = user_token or env_token resp = make_response() resp.set_cookie("token", user_token, max_age=60*60*24*365) # redirect to GET resp.headers["Location"] = "/" resp.status_code = 302 return resp if active_token: try: client = HttpClient( current_app.config["NUBES_API_ENDPOINT"], active_token, ) org = get_organization(client) except Exception as e: error = str(e) return render_template("index.html", organization=org, error=error, env_token_masked=_mask(env_token), has_user_token=bool(user_token))