v1.5: Selbst gehostete Auth (Passwort + Passkeys), Postgres statt Supabase
Fundament: db/migrations/0001_init.sql (users/sessions/passkey_credentials/ webauthn_challenges + Inhaltstabellen ohne RLS), db/migrate.mjs (idempotenter Migrationsrunner), lib/db (pg-Pool + query-Wrapper), lib/auth/password.ts (Node-crypto.scrypt, keine neue Abhängigkeit), lib/auth/session.ts (opake DB-Session-Tokens, Sliding-Refresh in proxy.ts). Passkeys: @simplewebauthn/server + /browser ersetzen Supabase's experimentelles WebAuthn-API (dafür gab es bisher kein eigenes Credential-Schema); RP-Konfiguration kommt jetzt direkt aus APP_URL statt über scripts/configure-passkeys.mjs und die Supabase-Management-API. scripts/bootstrap-admin.mjs legt bei leerer users-Tabelle automatisch einen Admin mit zufälligem Passwort an und hängt die Zugangsdaten an ZUGANGSDATEN.md an (idempotent, via predev/prestart-Hooks aufgerufen). Bugfix im Zuge des Umbaus: "mind. 1 Passkey nötig, um Passwort-Login zu deaktivieren" wurde bisher nur clientseitig geprüft – jetzt zusätzlich serverseitig in PATCH /api/account. E-Mail-Änderung im eigenen Konto läuft jetzt direkt nach Passwort-Bestätigung statt über eine Supabase-Bestätigungsmail (kein SMTP-Server vorhanden). Rest der Anwendung (Gerichte/Essenszeiten/Kennzeichnung/Vorschläge/ Benutzerverwaltung/Branding) nutzt noch den alten Supabase-Client – folgt in weiteren Commits.
This commit is contained in:
@@ -47,7 +47,6 @@ const de = {
|
||||
passkeyButton: "Mit Passkey anmelden",
|
||||
backToMenu: "← Zur Speisekarte",
|
||||
errorInvalidCredentials: "E-Mail-Adresse oder Passwort ist falsch.",
|
||||
errorEmailNotConfirmed: "Die E-Mail-Adresse wurde noch nicht bestätigt.",
|
||||
errorPasskeyCancelled: "Passkey-Anmeldung wurde abgebrochen.",
|
||||
errorGeneric: "Anmeldung fehlgeschlagen: {message}",
|
||||
errorPasswordDisabled:
|
||||
@@ -205,8 +204,7 @@ const de = {
|
||||
nameRequired: "Bitte einen Namen angeben.",
|
||||
emailTitle: "E-Mail-Adresse",
|
||||
changeEmail: "E-Mail-Adresse ändern",
|
||||
emailSent:
|
||||
"Bestätigungs-E-Mails wurden verschickt. Die neue Adresse wird erst nach Bestätigung des Links aktiv.",
|
||||
emailChanged: "E-Mail-Adresse geändert.",
|
||||
passwordTitle: "Passwort ändern",
|
||||
currentPassword: "Aktuelles Passwort (zur Verifizierung)",
|
||||
newPassword: "Neues Passwort",
|
||||
@@ -303,7 +301,6 @@ const en: Dict = {
|
||||
passkeyButton: "Sign in with passkey",
|
||||
backToMenu: "← Back to menu",
|
||||
errorInvalidCredentials: "Email address or password is incorrect.",
|
||||
errorEmailNotConfirmed: "This email address has not been confirmed yet.",
|
||||
errorPasskeyCancelled: "Passkey sign-in was cancelled.",
|
||||
errorGeneric: "Sign-in failed: {message}",
|
||||
errorPasswordDisabled:
|
||||
@@ -461,8 +458,7 @@ const en: Dict = {
|
||||
nameRequired: "Please enter a name.",
|
||||
emailTitle: "Email address",
|
||||
changeEmail: "Change email address",
|
||||
emailSent:
|
||||
"Confirmation emails have been sent. The new address becomes active only after confirming the link.",
|
||||
emailChanged: "Email address changed.",
|
||||
passwordTitle: "Change password",
|
||||
currentPassword: "Current password (for verification)",
|
||||
newPassword: "New password",
|
||||
@@ -557,7 +553,6 @@ const pl: Dict = {
|
||||
passkeyButton: "Zaloguj się kluczem dostępu",
|
||||
backToMenu: "← Powrót do jadłospisu",
|
||||
errorInvalidCredentials: "Nieprawidłowy adres e-mail lub hasło.",
|
||||
errorEmailNotConfirmed: "Adres e-mail nie został jeszcze potwierdzony.",
|
||||
errorPasskeyCancelled: "Logowanie kluczem dostępu zostało anulowane.",
|
||||
errorGeneric: "Logowanie nie powiodło się: {message}",
|
||||
errorPasswordDisabled:
|
||||
@@ -715,8 +710,7 @@ const pl: Dict = {
|
||||
nameRequired: "Podaj nazwę.",
|
||||
emailTitle: "Adres e-mail",
|
||||
changeEmail: "Zmień adres e-mail",
|
||||
emailSent:
|
||||
"Wysłano e-maile potwierdzające. Nowy adres zacznie obowiązywać dopiero po potwierdzeniu linku.",
|
||||
emailChanged: "Adres e-mail zmieniony.",
|
||||
passwordTitle: "Zmień hasło",
|
||||
currentPassword: "Obecne hasło (do weryfikacji)",
|
||||
newPassword: "Nowe hasło",
|
||||
|
||||
Reference in New Issue
Block a user