The web app grows its account surface: login (with next-redirect, unverified-hint + resend), signup (react-hook-form + shared Zod schemas, field-level api errors, closed-registration state fed by the new public GET /auth/registration), e-mail verification, forgot/reset password; a settings page with profile (locale applies immediately), password change, and active-session management; a Site-Admin page for instance name, default locale, and registration mode. AuthProvider holds /auth/me, applies the profile locale, and backs route guards (RequireAuth/RequireAnonymous/RequireSiteAdmin); the top bar gains a user menu. All strings ship in the new auth/settings namespaces (de+ en); the exception filter now preserves handler-specific error codes. Verified live: signup → Mailpit → verify → login → profile through the Vite proxy. Closes #16 Closes #17 Closes #18 Closes #19 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
71 lines
2.4 KiB
JSON
71 lines
2.4 KiB
JSON
{
|
|
"login": {
|
|
"title": "Anmelden",
|
|
"usernameOrEmail": "Benutzername oder E-Mail",
|
|
"password": "Passwort",
|
|
"submit": "Anmelden",
|
|
"forgot": "Passwort vergessen?",
|
|
"noAccount": "Noch kein Konto?",
|
|
"signupLink": "Jetzt registrieren",
|
|
"resendHint": "Keine Bestätigungs-Mail bekommen?",
|
|
"resendLink": "Erneut senden"
|
|
},
|
|
"signup": {
|
|
"title": "Konto anlegen",
|
|
"username": "Benutzername",
|
|
"usernameHint": "Buchstaben, Ziffern, Bindestriche — deine Adresse im Dorfteich.",
|
|
"email": "E-Mail-Adresse",
|
|
"displayName": "Anzeigename",
|
|
"password": "Passwort",
|
|
"passwordHint": "Mindestens 10 Zeichen. Ein kurzer Satz funktioniert gut.",
|
|
"submit": "Registrieren",
|
|
"haveAccount": "Schon registriert?",
|
|
"loginLink": "Anmelden",
|
|
"closed": "Die Registrierung ist auf dieser Instanz derzeit geschlossen.",
|
|
"success": {
|
|
"title": "Schau in dein Postfach",
|
|
"body": "Wir haben einen Bestätigungslink an {{email}} geschickt. Er ist 24 Stunden gültig.",
|
|
"resend": "Mail erneut senden"
|
|
}
|
|
},
|
|
"verify": {
|
|
"title": "E-Mail-Adresse wird bestätigt …",
|
|
"success": {
|
|
"title": "E-Mail-Adresse bestätigt",
|
|
"body": "Dein Konto ist aktiv — du kannst dich jetzt anmelden.",
|
|
"login": "Zur Anmeldung"
|
|
},
|
|
"error": {
|
|
"title": "Dieser Link hat nicht funktioniert",
|
|
"resendPrompt": "Gib deine E-Mail-Adresse ein, wir schicken dir einen frischen Link:",
|
|
"resend": "Neuen Link senden"
|
|
},
|
|
"resent": "Falls die Adresse zu einem unbestätigten Konto gehört, ist eine neue Mail unterwegs."
|
|
},
|
|
"forgot": {
|
|
"title": "Passwort zurücksetzen",
|
|
"body": "Gib deine E-Mail-Adresse ein. Falls ein Konto existiert, bekommst du einen Link zum Zurücksetzen (eine Stunde gültig).",
|
|
"email": "E-Mail-Adresse",
|
|
"submit": "Link senden",
|
|
"sent": "Erledigt — schau in dein Postfach.",
|
|
"backToLogin": "Zurück zur Anmeldung"
|
|
},
|
|
"reset": {
|
|
"title": "Neues Passwort setzen",
|
|
"password": "Neues Passwort",
|
|
"submit": "Passwort speichern",
|
|
"success": {
|
|
"title": "Passwort gespeichert",
|
|
"body": "Alle bisherigen Sitzungen wurden abgemeldet. Melde dich mit dem neuen Passwort an.",
|
|
"login": "Zur Anmeldung"
|
|
}
|
|
},
|
|
"menu": {
|
|
"settings": "Einstellungen",
|
|
"admin": "Administration",
|
|
"logout": "Abmelden",
|
|
"login": "Anmelden",
|
|
"signup": "Registrieren"
|
|
}
|
|
}
|