diff --git a/site/routes/main.py b/site/routes/main.py index 82491ce..6404c25 100644 --- a/site/routes/main.py +++ b/site/routes/main.py @@ -1,4 +1,4 @@ -from flask import Blueprint, current_app, render_template +from flask import Blueprint, current_app, render_template, request, make_response from api.http_client import HttpClient from operations.get_instances import get_organization @@ -6,16 +6,51 @@ from operations.get_instances import get_organization bp = Blueprint("main", __name__) -@bp.route("/") +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 - try: - client = HttpClient( - current_app.config["NUBES_API_ENDPOINT"], - current_app.config["NUBES_API_TOKEN"], - ) - org = get_organization(client) - except Exception as e: - error = str(e) - return render_template("index.html", organization=org, error=error) + 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)) diff --git a/site/templates/index.html b/site/templates/index.html index 34f461e..2bb97ad 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -9,7 +9,16 @@
-
Организация
+
+ Организация +
+ + + {% if has_user_token %} + + {% endif %} +
+
{% if organization %} @@ -31,7 +40,7 @@
{% else %} -

{% if error %}Ошибка: {{ error }}{% else %}Организация не найдена.{% endif %}

+

{% if error %}Ошибка: {{ error }}{% else %}Введите токен{% endif %}

{% endif %}