Add token input, cookie storage, logout
This commit is contained in:
+46
-11
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user