47 lines
1.7 KiB
HTML
47 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Jumphost Login</title>
|
|
<link rel="stylesheet" href="/static/css/app.css">
|
|
</head>
|
|
<body>
|
|
<div class="center-screen">
|
|
<div class="card">
|
|
<h1>Jumphost Anmeldung</h1>
|
|
|
|
<form id="login-form" data-step="password">
|
|
<div id="password-fields">
|
|
<label for="username">Benutzername</label>
|
|
<input type="text" id="username" autocomplete="username" required>
|
|
<label for="password">Passwort</label>
|
|
<input type="password" id="password" autocomplete="current-password" required>
|
|
</div>
|
|
|
|
<div id="totp-fields" class="hidden">
|
|
<label for="totp-code">Code aus der Authenticator-App</label>
|
|
<input type="text" id="totp-code" inputmode="numeric" pattern="[0-9]*" autocomplete="one-time-code">
|
|
<p class="hint">Bei erstmaliger Anmeldung: Secret unten scannen, danach den 6-stelligen Code eingeben.</p>
|
|
</div>
|
|
|
|
<div id="enroll-box" class="hidden">
|
|
<img id="qr-img" class="qr" alt="TOTP QR-Code" width="180" height="180">
|
|
<p class="hint">Mit einer Authenticator-App (z.B. Aegis, FreeOTP) scannen.</p>
|
|
</div>
|
|
|
|
<div id="recovery-box" class="hidden">
|
|
<p class="hint">Recovery-Codes -- jetzt sicher speichern, werden nicht erneut angezeigt:</p>
|
|
<div id="recovery-codes" class="recovery-codes"></div>
|
|
</div>
|
|
|
|
<button type="submit" id="submit-btn">Anmelden</button>
|
|
<div class="error" id="error-box"></div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/static/js/login.js"></script>
|
|
</body>
|
|
</html>
|