mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
3d7e8be9aa
An SSO login that matched no account by its subject took the account with the same email address and linked the provider identity to it. That address proves nothing when the account typed it in itself: anyone could sign up with, or switch their profile to, a colleague's address and receive the colleague's first SSO login. The provider switch branch (#2110) relinked a row on any email match without even asking for email_verified, and also for another subject of the same provider. users.email_self_asserted remembers an address the account set itself: signup (not the first account) and an email change in the profile settings set it, an admin entering a new address clears it, and accounts the provider creates start without it. Existing accounts keep linking, except those whose address moved away from the registered one without an admin editing it. A login by email now needs a verified address and an unmarked account, and is refused for another subject of the same issuer, with email_link_blocked and a translated message on the login screen. An email change in the profile settings writes a user.email_change audit row. Refs #2110
84 lines
5.2 KiB
TypeScript
84 lines
5.2 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const login: TranslationStrings = {
|
|
'login.error': 'Anmeldung fehlgeschlagen. Bitte Zugangsdaten prüfen.',
|
|
'login.tagline': 'Deine Reisen.\nDein Plan.',
|
|
'login.description': 'Plane Reisen gemeinsam mit interaktiven Karten, Budgets und Echtzeit-Sync.',
|
|
'login.title': 'Anmelden',
|
|
'login.subtitle': 'Willkommen zurück',
|
|
'login.signingIn': 'Anmelden…',
|
|
'login.signIn': 'Anmelden',
|
|
'login.createAdmin': 'Admin-Konto erstellen',
|
|
'login.createAdminHint': 'Erstelle das erste Admin-Konto für TREK.',
|
|
'login.setNewPassword': 'Neues Passwort festlegen',
|
|
'login.setNewPasswordHint': 'Sie müssen Ihr Passwort ändern, bevor Sie fortfahren können.',
|
|
'login.createAccount': 'Konto erstellen',
|
|
'login.createAccountHint': 'Neues Konto registrieren.',
|
|
'login.creating': 'Erstelle…',
|
|
'login.noAccount': 'Noch kein Konto?',
|
|
'login.hasAccount': 'Bereits ein Konto?',
|
|
'login.register': 'Registrieren',
|
|
'login.emailPlaceholder': 'deine@email.de',
|
|
'login.username': 'Benutzername',
|
|
'login.oidc.registrationDisabled': 'Registrierung ist deaktiviert. Kontaktiere den Administrator.',
|
|
'login.oidc.noEmail': 'Keine E-Mail vom Provider erhalten.',
|
|
'login.oidc.tokenFailed': 'Authentifizierung fehlgeschlagen.',
|
|
'login.oidc.invalidState': 'Ungültige Sitzung. Bitte erneut versuchen.',
|
|
'login.oidc.emailNotVerified':
|
|
'Dein Anmeldeanbieter hat diese E-Mail-Adresse nicht bestätigt, daher kann sie nicht mit einem bestehenden Konto verknüpft werden.',
|
|
'login.oidc.emailLinkBlocked':
|
|
'Diese Anmeldung konnte nicht mit dem bestehenden Konto zu dieser E-Mail verknüpft werden. Bitte den Administrator, die Adresse zu bestätigen.',
|
|
'login.demoFailed': 'Demo-Login fehlgeschlagen',
|
|
'login.oidcSignIn': 'Anmelden mit {name}',
|
|
'login.oidcOnly': 'Passwort-Authentifizierung ist deaktiviert. Bitte melde dich über deinen SSO-Anbieter an.',
|
|
'login.oidcLoggedOut': 'Du wurdest abgemeldet. Melde dich erneut über deinen SSO-Anbieter an.',
|
|
'login.oidcRedirecting': 'Du wirst zu {name} weitergeleitet…',
|
|
'login.oidcRedirectSlow': 'Noch hier? Weiter zu {name}',
|
|
'login.demoHint': 'Demo ausprobieren — ohne Registrierung',
|
|
'login.mfaTitle': 'Zwei-Faktor-Authentifizierung',
|
|
'login.mfaSubtitle': 'Gib den 6-stelligen Code aus deiner Authenticator-App ein.',
|
|
'login.mfaCodeLabel': 'Bestätigungscode',
|
|
'login.mfaCodeRequired': 'Bitte den Code aus der Authenticator-App eingeben.',
|
|
'login.mfaHint': 'Google Authenticator, Authy oder eine andere TOTP-App öffnen.',
|
|
'login.mfaBack': '← Zurück zur Anmeldung',
|
|
'login.mfaVerify': 'Bestätigen',
|
|
'login.invalidInviteLink': 'Ungültiger oder abgelaufener Einladungslink',
|
|
'login.oidcFailed': 'OIDC-Anmeldung fehlgeschlagen',
|
|
'login.usernameRequired': 'Benutzername ist erforderlich',
|
|
'login.passwordMinLength': 'Das Passwort muss mindestens 8 Zeichen lang sein',
|
|
'login.forgotPassword': 'Passwort vergessen?',
|
|
'login.rememberMe': 'Angemeldet bleiben',
|
|
'login.forgotPasswordTitle': 'Passwort zurücksetzen',
|
|
'login.forgotPasswordBody':
|
|
'Gib die E-Mail-Adresse deines Kontos ein. Falls ein Konto existiert, schicken wir dir einen Reset-Link.',
|
|
'login.forgotPasswordSubmit': 'Reset-Link senden',
|
|
'login.forgotPasswordSentTitle': 'Prüfe deine E-Mails',
|
|
'login.forgotPasswordSentBody':
|
|
'Falls ein Konto mit dieser Adresse existiert, ist ein Reset-Link unterwegs. Er läuft in 60 Minuten ab.',
|
|
'login.forgotPasswordSmtpHintOff':
|
|
'Hinweis: Der Administrator hat SMTP nicht konfiguriert. Der Reset-Link wird statt per E-Mail in die Server-Konsole geschrieben.',
|
|
'login.backToLogin': 'Zurück zur Anmeldung',
|
|
'login.newPassword': 'Neues Passwort',
|
|
'login.confirmPassword': 'Neues Passwort bestätigen',
|
|
'login.passwordsDontMatch': 'Passwörter stimmen nicht überein',
|
|
'login.mfaCode': '2FA-Code',
|
|
'login.resetPasswordTitle': 'Neues Passwort festlegen',
|
|
'login.resetPasswordBody': 'Wähle ein starkes Passwort, das du hier noch nicht verwendet hast. Mindestens 8 Zeichen.',
|
|
'login.resetPasswordMfaBody': 'Gib deinen 2FA-Code oder einen Backup-Code ein, um den Reset abzuschließen.',
|
|
'login.resetPasswordSubmit': 'Passwort zurücksetzen',
|
|
'login.resetPasswordVerify': 'Prüfen & zurücksetzen',
|
|
'login.resetPasswordSuccessTitle': 'Passwort aktualisiert',
|
|
'login.resetPasswordSuccessBody': 'Du kannst dich jetzt mit deinem neuen Passwort anmelden.',
|
|
'login.resetPasswordInvalidLink': 'Ungültiger Reset-Link',
|
|
'login.resetPasswordInvalidLinkBody':
|
|
'Dieser Link fehlt oder ist beschädigt. Fordere einen neuen an, um fortzufahren.',
|
|
'login.resetPasswordFailed': 'Zurücksetzen fehlgeschlagen. Der Link ist möglicherweise abgelaufen.',
|
|
'login.passkey.signIn': 'Mit Passkey anmelden',
|
|
'login.passkey.failed': 'Anmeldung mit Passkey fehlgeschlagen. Bitte erneut versuchen.',
|
|
'login.insecureCookie.title': 'Login hält über HTTP nicht',
|
|
'login.insecureCookie.body':
|
|
'Du verbindest dich über reines HTTP, daher verwirft dein Browser TREKs sicheren Session-Cookie — die nächste Anfrage scheitert mit „Access token required". Lösung: HTTPS nutzen, oder für ein Heim-Setup COOKIE_SECURE=false setzen.',
|
|
'login.insecureCookie.link': 'Zur Troubleshooting-Anleitung',
|
|
};
|
|
export default login;
|