MeshDD-Bot/static/login.html
ppfeiffer 0b68c0417d fix: v0.6.8 - Bugfixes: Node-Sync, Modal, Badge, CSS
- bot.py: pub.subscribe vor TCPInterface verschoben; Nodes beim Start
  wurden nicht geladen da connection.established/node.updated Events
  verpasst wurden. Fallback-Sync nach Konstruktor ergaenzt.
- HTML: tabler.min.js -> bootstrap.bundle.min.js; Tabler exportiert
  bootstrap nicht global, new bootstrap.Modal() schlug fehl.
- dashboard.js: badge-pill -> rounded-pill (Bootstrap 4 -> 5)
- style.css: --tblr-bg-body Typo -> --tblr-body-bg

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 16:01:49 +01:00

124 lines
6.6 KiB
HTML

<!DOCTYPE html>
<html lang="de" data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MeshDD-Bot Login</title>
<link href="https://cdn.jsdelivr.net/npm/@tabler/core@1.4.0/dist/css/tabler.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<link rel="stylesheet" href="/static/css/style.css">
</head>
<body class="antialiased">
<!-- Top Navbar -->
<nav class="top-navbar d-flex align-items-center px-3">
<span class="fw-bold me-auto">
<i class="bi bi-broadcast-pin text-info me-1"></i>MeshDD-Bot
</span>
<button class="btn btn-sm btn-outline-secondary py-0 px-1" id="themeToggle" title="Theme wechseln">
<i class="bi bi-sun-fill" id="themeIcon" style="font-size:.75rem"></i>
</button>
</nav>
<!-- Content (centered, no sidebar) -->
<main style="margin-top:48px;min-height:calc(100vh - 48px);display:flex;align-items:center;justify-content:center;background:var(--tblr-bg-body,var(--bs-body-bg))">
<div style="width:100%;max-width:400px;padding:1rem">
<!-- Login Form -->
<div id="loginView">
<div class="card card-outline card-info">
<div class="card-header text-center">
<i class="bi bi-person-lock me-1"></i>Anmelden
</div>
<div class="card-body">
<div id="loginAlert" class="alert alert-danger py-1 small d-none"></div>
<div class="mb-3">
<label for="loginEmail" class="form-label small">E-Mail</label>
<input type="email" class="form-control form-control-sm" id="loginEmail" required>
</div>
<div class="mb-3">
<label for="loginPassword" class="form-label small">Passwort</label>
<input type="password" class="form-control form-control-sm" id="loginPassword" required>
</div>
<button class="btn btn-info btn-sm w-100" id="btnLogin">Anmelden</button>
<div class="mt-2 text-center small">
<a href="#" id="showRegister" class="text-decoration-none">Registrieren</a>
<span class="text-body-secondary mx-1">|</span>
<a href="#" id="showForgot" class="text-decoration-none">Passwort vergessen</a>
</div>
</div>
</div>
</div>
<!-- Register Form -->
<div id="registerView" class="d-none">
<div class="card card-outline card-success">
<div class="card-header text-center">
<i class="bi bi-person-plus me-1"></i>Registrieren
</div>
<div class="card-body">
<div id="registerAlert" class="alert py-1 small d-none"></div>
<div class="mb-3">
<label for="registerName" class="form-label small">Name</label>
<input type="text" class="form-control form-control-sm" id="registerName" required>
</div>
<div class="mb-3">
<label for="registerEmail" class="form-label small">E-Mail</label>
<input type="email" class="form-control form-control-sm" id="registerEmail" required>
</div>
<button class="btn btn-success btn-sm w-100" id="btnRegister">Registrieren</button>
<div class="mt-2 text-center small">
<a href="#" id="showLoginFromReg" class="text-decoration-none">Zurueck zum Login</a>
</div>
</div>
</div>
</div>
<!-- Forgot Password Form -->
<div id="forgotView" class="d-none">
<div class="card card-outline card-warning">
<div class="card-header text-center">
<i class="bi bi-key me-1"></i>Passwort vergessen
</div>
<div class="card-body">
<div id="forgotAlert" class="alert py-1 small d-none"></div>
<div class="mb-3">
<label for="forgotEmail" class="form-label small">E-Mail</label>
<input type="email" class="form-control form-control-sm" id="forgotEmail" required>
</div>
<button class="btn btn-warning btn-sm w-100" id="btnForgot">Link senden</button>
<div class="mt-2 text-center small">
<a href="#" id="showLoginFromForgot" class="text-decoration-none">Zurueck zum Login</a>
</div>
</div>
</div>
</div>
<!-- Set Password Form (verify + reset) -->
<div id="setPasswordView" class="d-none">
<div class="card card-outline card-primary">
<div class="card-header text-center">
<i class="bi bi-shield-lock me-1"></i><span id="setPasswordTitle">Passwort setzen</span>
</div>
<div class="card-body">
<div id="setPasswordAlert" class="alert py-1 small d-none"></div>
<div class="mb-3">
<label for="newPassword" class="form-label small">Neues Passwort (min. 8 Zeichen)</label>
<input type="password" class="form-control form-control-sm" id="newPassword" minlength="8" required>
</div>
<div class="mb-3">
<label for="confirmPassword" class="form-label small">Passwort wiederholen</label>
<input type="password" class="form-control form-control-sm" id="confirmPassword" minlength="8" required>
</div>
<button class="btn btn-primary btn-sm w-100" id="btnSetPassword">Passwort speichern</button>
</div>
</div>
</div>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="/static/js/login.js"></script>
</body>
</html>