Files
Webklar-Kundenbereich/public/login.html
T
ClaudeandClaude Opus 5.5 81119c19bc Kundenbereich: Passwort selbst ändern
Im Konto-Menü (Profilbild) gibt es unter "Konto" jetzt "Passwort
ändern". Die Seite fragt aktuelles Passwort, neues Passwort und
Wiederholung ab (mindestens 8 Zeichen, "Passwörter anzeigen"). Am
Handy ist sie eine Unterseite des Tabs, aus dem man kam; Direktlink
/dashboard.html#passwort. Im Ansichtsmodus ist sie gesperrt.

Server (POST /api/auth/password):
- Das aktuelle Passwort wird über eine kurze Appwrite-Session geprüft,
  die gleich wieder gelöscht wird. Tippfehler lösen nicht die globale
  Login-Sperre aus. Es gibt höchstens 5 Prüfungen je Kunde und Stunde,
  das bleibt unter Appwrites Grenze (10 Anmeldungen je E-Mail und
  Stunde).
- Das neue Passwort wird über die Users-API gesetzt. Fehler von
  Appwrite (zuletzt benutzt, zu häufig, persönliche Daten) kommen als
  verständliche Meldung.
- Die Klartext-Kopie in customers.portalPassword und ein Alt-Eintrag
  in den Notizen werden geleert. Ein selbst gewähltes Passwort wird
  nie im Klartext gespeichert; das Ticketsystem zeigt dann "–".
- Der Kunde bekommt eine Bestätigungsmail (Kopie an die Admins wie
  bei allen Kundenmails).

Andere Geräte werden abgemeldet: Kunden-Sessions merken sich beim
Login den Passwortstand (Appwrite passwordUpdate, pwv).
requireSession und /api/auth/me prüfen ihn, 60 s zwischengespeichert.
Das gilt auch, wenn wir im Ticketsystem ein neues Passwort setzen. Ist
Appwrite nicht erreichbar, bleibt die Session gültig. Sessions von
vor diesem Update haben keinen Stand und laufen normal aus (höchstens
7 Tage).

Login-Seite: Hinweis auf "Passwort ändern" statt "über das
Ticketsystem", dazu "Passwort vergessen?" mit support@webklar.com.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 09:22:37 +00:00

97 lines
4.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Anmelden – Webklar Kundenbereich</title>
<!-- Als App auf den Homescreen (siehe dashboard.html) -->
<link rel="manifest" href="/manifest.webmanifest">
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/img/apple-touch-icon.png">
<meta name="theme-color" content="#09090b">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- Durchsichtige Statusleiste: der lila Hintergrund reicht bis in die Notch. Damit fixierte Leisten
trotzdem ganz unten sitzen, bleibt die Seite in der installierten App immer 1 px scrollbar
(siehe "Installierte App auf dem iPhone" in login.css/kundenbereich.css) -->
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="WEBklar">
<link rel="stylesheet" href="/login.css">
</head>
<body class="portal-page login-page">
<div class="aurora-background" aria-hidden="true">
<div class="aurora-beams"></div>
</div>
<header class="portal-header login-header">
<a class="portal-logo login-logo" href="/login.html">Webklar</a>
</header>
<main class="login-main">
<div class="login-panel">
<div class="AuthForm login-content-reveal">
<!-- Handy: App-Icon wie beim Start einer App -->
<div class="login-app-brand">
<img src="/img/app-icon-192.png" alt="" width="64" height="64">
<span>WEBklar Kundenbereich</span>
</div>
<div class="login-section">
<p class="auth-label">Anmelden</p>
<form id="login-form" class="login-form" novalidate>
<input
class="auth-input"
type="email"
name="email"
id="email"
placeholder="E-Mail"
required
autocomplete="username"
autocapitalize="none"
spellcheck="false"
enterkeyhint="next"
>
<input
class="auth-input"
type="password"
name="password"
id="password"
placeholder="Passwort"
required
autocomplete="current-password"
enterkeyhint="go"
>
<p id="login-error" class="error hidden"></p>
<button type="submit" id="login-btn" class="auth-button login-button">
<span class="button-label">Anmelden</span>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 11 10" aria-hidden="true">
<path fill="currentColor" d="m4.56 8.352 1.824-1.84q.224-.225.144-.4-.064-.192-.384-.192H0V3.76h6.128q.32 0 .4-.176.08-.192-.144-.416l-1.84-1.84L5.84 0l4.848 4.848L5.856 9.68z"></path>
</svg>
<svg class="loading-spinner" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" aria-hidden="true">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 1 1-6.219-8.56"></path>
</svg>
</button>
</form>
</div>
<p class="login-hint">
Zugangsdaten erhältst du von Webklar. Dein Passwort kannst du nach der Anmeldung selbst ändern (Profilbild oben rechts, „Passwort ändern“).
Passwort vergessen? Schreib uns an <a href="mailto:support@webklar.com" style="color:inherit">support@webklar.com</a>.
</p>
<p class="login-hint">
<a href="/kuendigen.html" style="color:#fff;font-weight:700">Verträge hier kündigen</a> ·
<a href="/widerrufen.html" style="color:#fff;font-weight:700">Vertrag widerrufen</a><br>
<a href="/abo-bedingungen.html" target="_blank" rel="noopener" style="color:inherit">Vertragsbedingungen</a> ·
<a href="/datenschutz.html" target="_blank" rel="noopener" style="color:inherit">Datenschutz</a> ·
<a href="https://webklar.com/impressum" target="_blank" rel="noopener" style="color:inherit">Impressum</a>
</p>
</div>
</div>
</main>
<script src="/app.js"></script>
<script>
initLoginPage();
</script>
</body>
</html>