Neuer, von provisioning-server (anode) getrennter Dienst, siehe ADR-0011: FastAPI + Jinja2, eigene Postgres-DB (benutzer-Tabelle), eigenes Service-Token (TUXFLOTTE_KUNDENPLATTFORM_TOKEN) für die Kommunikation mit anode. Org-Zugehörigkeits-Prüfung passiert hier in der Anwendung vor jedem Aufruf gegen anode. Umfang v1: Login, Geräteliste, Auftragskatalog geräteweise aus-/abwählen (inkl. der standardbrowser-Option für Brave). systemd-Unit läuft unter eigenem unprivilegiertem System-User statt root. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
33 lines
1.5 KiB
HTML
33 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>{% block title %}Tuxflotte{% endblock %}</title>
|
|
<style>
|
|
body { font-family: system-ui, sans-serif; max-width: 60rem; margin: 2rem auto; padding: 0 1rem; color: #1a1a1a; }
|
|
header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 2rem; border-bottom: 1px solid #ddd; padding-bottom: 0.5rem; }
|
|
header a { color: inherit; text-decoration: none; }
|
|
h1 { font-size: 1.2rem; margin: 0; }
|
|
table { width: 100%; border-collapse: collapse; }
|
|
th, td { text-align: left; padding: 0.5rem; border-bottom: 1px solid #eee; }
|
|
.kategorie { margin-top: 1.5rem; }
|
|
.kategorie h2 { font-size: 1rem; color: #555; margin-bottom: 0.3rem; }
|
|
.state-present { color: #1a7f37; font-weight: 600; }
|
|
.state-absent { color: #999; }
|
|
form.inline { display: inline; }
|
|
button { cursor: pointer; padding: 0.3rem 0.8rem; }
|
|
.fehler { background: #fee; border: 1px solid #f99; padding: 0.6rem; border-radius: 4px; margin-bottom: 1rem; }
|
|
.optionen label { font-weight: normal; font-size: 0.9rem; color: #555; display: block; margin: 0.2rem 0; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1><a href="/geraete">Tuxflotte Kundenplattform</a></h1>
|
|
{% if user %}
|
|
<span>{{ user.email }} — <a href="/logout">Abmelden</a></span>
|
|
{% endif %}
|
|
</header>
|
|
{% block content %}{% endblock %}
|
|
</body>
|
|
</html>
|