mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 22:31:46 +00:00
bf969ee80d
Adds a "Remember me" checkbox to the login form (single responsive page, covers mobile + desktop). Unchecked (default) issues the existing SESSION_DURATION JWT with a browser-session cookie (no maxAge); checked issues a longer-lived JWT plus a persistent cookie sized by the new SESSION_DURATION_REMEMBER env var (default 30d). The choice is threaded through the MFA verify leg so it survives the step-up. Register/demo logins keep their current persistent behaviour.
99 lines
4.9 KiB
TypeScript
99 lines
4.9 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const login: TranslationStrings = {
|
||
'login.error': 'Login failed. Please check your credentials.',
|
||
'login.tagline': 'Your Trips.\nYour Plan.',
|
||
'login.description':
|
||
'Plan trips collaboratively with interactive maps, budgets, and real-time sync.',
|
||
'login.features.maps': 'Interactive Maps',
|
||
'login.features.mapsDesc': 'Google Places, routes & clustering',
|
||
'login.features.realtime': 'Real-Time Sync',
|
||
'login.features.realtimeDesc': 'Plan together via WebSocket',
|
||
'login.features.budget': 'Budget Tracking',
|
||
'login.features.budgetDesc': 'Categories, charts & per-person costs',
|
||
'login.features.collab': 'Collaboration',
|
||
'login.features.collabDesc': 'Multi-user with shared trips',
|
||
'login.features.packing': 'Packing Lists',
|
||
'login.features.packingDesc': 'Categories, progress & suggestions',
|
||
'login.features.bookings': 'Reservations',
|
||
'login.features.bookingsDesc': 'Flights, hotels, restaurants & more',
|
||
'login.features.files': 'Documents',
|
||
'login.features.filesDesc': 'Upload & manage documents',
|
||
'login.features.routes': 'Smart Routes',
|
||
'login.features.routesDesc': 'Auto-optimize & Google Maps export',
|
||
'login.selfHosted': 'Self-hosted · Open Source · Your data stays yours',
|
||
'login.title': 'Sign In',
|
||
'login.subtitle': 'Welcome back',
|
||
'login.signingIn': 'Signing in…',
|
||
'login.signIn': 'Sign In',
|
||
'login.createAdmin': 'Create Admin Account',
|
||
'login.createAdminHint': 'Set up the first admin account for TREK.',
|
||
'login.setNewPassword': 'Set New Password',
|
||
'login.setNewPasswordHint':
|
||
'You must change your password before continuing.',
|
||
'login.createAccount': 'Create Account',
|
||
'login.createAccountHint': 'Register a new account.',
|
||
'login.creating': 'Creating…',
|
||
'login.noAccount': "Don't have an account?",
|
||
'login.hasAccount': 'Already have an account?',
|
||
'login.register': 'Register',
|
||
'login.emailPlaceholder': 'your@email.com',
|
||
'login.username': 'Username',
|
||
'login.oidc.registrationDisabled':
|
||
'Registration is disabled. Contact your administrator.',
|
||
'login.oidc.noEmail': 'No email received from provider.',
|
||
'login.oidc.tokenFailed': 'Authentication failed.',
|
||
'login.oidc.invalidState': 'Invalid session. Please try again.',
|
||
'login.demoFailed': 'Demo login failed',
|
||
'login.oidcSignIn': 'Sign in with {name}',
|
||
'login.oidcOnly':
|
||
'Password authentication is disabled. Please sign in using your SSO provider.',
|
||
'login.oidcLoggedOut':
|
||
'You have been logged out. Sign in again using your SSO provider.',
|
||
'login.demoHint': 'Try the demo — no registration needed',
|
||
'login.mfaTitle': 'Two-factor authentication',
|
||
'login.mfaSubtitle': 'Enter the 6-digit code from your authenticator app.',
|
||
'login.mfaCodeLabel': 'Verification code',
|
||
'login.mfaCodeRequired': 'Enter the code from your authenticator app.',
|
||
'login.mfaHint': 'Open Google Authenticator, Authy, or another TOTP app.',
|
||
'login.mfaBack': '← Back to sign in',
|
||
'login.mfaVerify': 'Verify',
|
||
'login.invalidInviteLink': 'Invalid or expired invite link',
|
||
'login.oidcFailed': 'OIDC login failed',
|
||
'login.usernameRequired': 'Username is required',
|
||
'login.passwordMinLength': 'Password must be at least 8 characters',
|
||
'login.forgotPassword': 'Forgot password?',
|
||
'login.rememberMe': 'Remember me',
|
||
'login.forgotPasswordTitle': 'Reset your password',
|
||
'login.forgotPasswordBody':
|
||
"Enter the email address you signed up with. If an account exists, we'll send a reset link.",
|
||
'login.forgotPasswordSubmit': 'Send reset link',
|
||
'login.forgotPasswordSentTitle': 'Check your email',
|
||
'login.forgotPasswordSentBody':
|
||
'If an account exists for that email, a reset link is on its way. It expires in 60 minutes.',
|
||
'login.forgotPasswordSmtpHintOff':
|
||
"Heads up: your administrator hasn't configured SMTP, so the reset link will be written to the server console instead of being emailed.",
|
||
'login.backToLogin': 'Back to sign in',
|
||
'login.newPassword': 'New password',
|
||
'login.confirmPassword': 'Confirm new password',
|
||
'login.passwordsDontMatch': "Passwords don't match",
|
||
'login.mfaCode': '2FA code',
|
||
'login.resetPasswordTitle': 'Set a new password',
|
||
'login.resetPasswordBody':
|
||
'Pick a strong password you haven’t used here before. Minimum 8 characters.',
|
||
'login.resetPasswordMfaBody':
|
||
'Enter your 2FA code or a backup code to complete the reset.',
|
||
'login.resetPasswordSubmit': 'Reset password',
|
||
'login.resetPasswordVerify': 'Verify & reset',
|
||
'login.resetPasswordSuccessTitle': 'Password updated',
|
||
'login.resetPasswordSuccessBody':
|
||
'You can now sign in with your new password.',
|
||
'login.resetPasswordInvalidLink': 'Invalid reset link',
|
||
'login.resetPasswordInvalidLinkBody':
|
||
'This link is missing or broken. Request a new one to continue.',
|
||
'login.resetPasswordFailed': 'Reset failed. The link may have expired.',
|
||
'login.passkey.signIn': 'Sign in with a passkey',
|
||
'login.passkey.failed': 'Passkey sign-in failed. Please try again.',
|
||
};
|
||
export default login;
|