mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-30 18:46:00 +00:00
72f9beffbe
When the server issues a Secure session cookie but the request arrived over plain HTTP (the common LAN install over http://ip:3000), the browser drops the cookie and the next request dead-ends on a bare "Access token required" — the top source of avoidable install issues. The login response now flags this exact case and the login page shows a localized box explaining the fix (use HTTPS, or set COOKIE_SECURE=false) with a link to the Troubleshooting guide. It only triggers in the real failure case, never for correct HTTPS setups.
93 lines
5.6 KiB
TypeScript
93 lines
5.6 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const login: TranslationStrings = {
|
||
'login.error': 'Accesso fallito. Controlla le tue credenziali.',
|
||
'login.tagline': 'I tuoi viaggi.\nIl tuo programma.',
|
||
'login.description':
|
||
'Programma viaggi in collaborazione con mappe interattive, budget e sincronizzazione in tempo reale.',
|
||
'login.features.maps': 'Mappe Interattive',
|
||
'login.features.mapsDesc': 'Google Places, percorsi e clustering',
|
||
'login.features.realtime': 'Sincronizzazione in tempo reale',
|
||
'login.features.realtimeDesc': 'Programmate insieme tramite WebSocket',
|
||
'login.features.budget': 'Tracciamento Budget',
|
||
'login.features.budgetDesc': 'Categorie, grafici e costi per persona',
|
||
'login.features.collab': 'Collaborazione',
|
||
'login.features.collabDesc': 'Multi-utente con viaggi condivisi',
|
||
'login.features.packing': 'Lista Valigia',
|
||
'login.features.packingDesc': 'Categorie, progressi e suggerimenti',
|
||
'login.features.bookings': 'Prenotazioni',
|
||
'login.features.bookingsDesc': 'Voli, alloggi, ristoranti e altro',
|
||
'login.features.files': 'Documenti',
|
||
'login.features.filesDesc': 'Carica e gestisci i documenti',
|
||
'login.features.routes': 'Percorsi Intelligenti',
|
||
'login.features.routesDesc': 'Ottimizzazione automatica ed esportazione su Google Maps',
|
||
'login.selfHosted': 'Self-hosted · Open Source · Your data stays yours',
|
||
'login.title': 'Accedi',
|
||
'login.subtitle': 'Bentornato',
|
||
'login.signingIn': 'Accesso in corso…',
|
||
'login.signIn': 'Accedi',
|
||
'login.createAdmin': 'Crea Account Amministratore',
|
||
'login.createAdminHint': 'Imposta il primo account amministratore per TREK.',
|
||
'login.setNewPassword': 'Imposta nuova password',
|
||
'login.setNewPasswordHint': 'Devi cambiare la password prima di continuare.',
|
||
'login.createAccount': 'Crea Account',
|
||
'login.createAccountHint': 'Registra un nuovo account.',
|
||
'login.creating': 'Creazione in corso…',
|
||
'login.noAccount': 'Non hai un account?',
|
||
'login.hasAccount': 'Hai già un account?',
|
||
'login.register': 'Registrati',
|
||
'login.emailPlaceholder': 'tua@email.com',
|
||
'login.username': 'Nome utente',
|
||
'login.oidc.registrationDisabled': 'La registrazione è disabilitata. Contatta il tuo amministratore.',
|
||
'login.oidc.noEmail': 'Nessuna email ricevuta dal provider.',
|
||
'login.oidc.tokenFailed': 'Autenticazione fallita.',
|
||
'login.oidc.invalidState': 'Sessione non valida. Riprova.',
|
||
'login.demoFailed': 'Accesso demo fallito',
|
||
'login.oidcSignIn': 'Accedi con {name}',
|
||
'login.oidcOnly': "L'autenticazione tramite password è disabilitata. Accedi utilizzando il tuo provider SSO.",
|
||
'login.oidcLoggedOut': 'Sei stato disconnesso. Accedi nuovamente tramite il tuo provider SSO.',
|
||
'login.demoHint': 'Prova la demo — nessuna registrazione necessaria',
|
||
'login.mfaTitle': 'Autenticazione a due fattori',
|
||
'login.mfaSubtitle': 'Inserisci il codice a 6 cifre dalla tua app authenticator.',
|
||
'login.mfaCodeLabel': 'Codice di verifica',
|
||
'login.mfaCodeRequired': 'Inserisci il codice dalla tua app authenticator.',
|
||
'login.mfaHint': "Apri Google Authenticator, Authy o un'altra app TOTP.",
|
||
'login.mfaBack': "← Torna all'accesso",
|
||
'login.mfaVerify': 'Verifica',
|
||
'login.invalidInviteLink': 'Link di invito non valido o scaduto',
|
||
'login.oidcFailed': 'Accesso OIDC non riuscito',
|
||
'login.usernameRequired': 'Il nome utente è obbligatorio',
|
||
'login.passwordMinLength': 'La password deve contenere almeno 8 caratteri',
|
||
'login.forgotPassword': 'Password dimenticata?',
|
||
'login.rememberMe': 'Ricordami',
|
||
'login.forgotPasswordTitle': 'Reimposta la password',
|
||
'login.forgotPasswordBody':
|
||
'Inserisci l’indirizzo email del tuo account. Se esiste un account, invieremo un link per reimpostarla.',
|
||
'login.forgotPasswordSubmit': 'Invia link',
|
||
'login.forgotPasswordSentTitle': 'Controlla la tua email',
|
||
'login.forgotPasswordSentBody': 'Se esiste un account con questa email, il link è in arrivo. Scade tra 60 minuti.',
|
||
'login.forgotPasswordSmtpHintOff':
|
||
'Nota: il tuo amministratore non ha configurato SMTP, quindi il link di reset verrà scritto nella console del server invece di essere inviato via email.',
|
||
'login.backToLogin': 'Torna all’accesso',
|
||
'login.newPassword': 'Nuova password',
|
||
'login.confirmPassword': 'Conferma nuova password',
|
||
'login.passwordsDontMatch': 'Le password non corrispondono',
|
||
'login.mfaCode': 'Codice 2FA',
|
||
'login.resetPasswordTitle': 'Imposta una nuova password',
|
||
'login.resetPasswordBody': 'Scegli una password robusta che non hai già usato qui. Minimo 8 caratteri.',
|
||
'login.resetPasswordMfaBody': 'Inserisci il codice 2FA o un codice di backup per completare il reset.',
|
||
'login.resetPasswordSubmit': 'Reimposta password',
|
||
'login.resetPasswordVerify': 'Verifica e reimposta',
|
||
'login.resetPasswordSuccessTitle': 'Password aggiornata',
|
||
'login.resetPasswordSuccessBody': 'Ora puoi accedere con la nuova password.',
|
||
'login.resetPasswordInvalidLink': 'Link di reset non valido',
|
||
'login.resetPasswordInvalidLinkBody': 'Il link è mancante o danneggiato. Richiedine uno nuovo per continuare.',
|
||
'login.resetPasswordFailed': 'Reset non riuscito. Il link potrebbe essere scaduto.',
|
||
'login.passkey.signIn': 'Accedi con una passkey',
|
||
'login.passkey.failed': 'Accesso con passkey non riuscito. Riprova.',
|
||
'login.insecureCookie.title': "Login won't stick over HTTP",
|
||
'login.insecureCookie.body': "You’re connecting over plain HTTP, so your browser drops TREK’s secure session cookie — the next request fails with \"Access token required\". Fix: use HTTPS, or for a home-lab set COOKIE_SECURE=false.",
|
||
'login.insecureCookie.link': "Open the Troubleshooting guide",
|
||
};
|
||
export default login;
|