Files
Felipe Cardoso 400d6f6f75 Enhance OAuth security and state validation
- Implemented stricter OAuth security measures, including CSRF protection via state parameter validation and redirect_uri checks.
- Updated OAuth models to support timezone-aware datetime comparisons, replacing deprecated `utcnow`.
- Enhanced logging for malformed Basic auth headers during token, introspect, and revoke requests.
- Added allowlist validation for OAuth provider domains to prevent open redirect attacks.
- Improved nonce validation for OpenID Connect tokens, ensuring token integrity during Google provider flows.
- Updated E2E and unit tests to cover new security features and expanded OAuth state handling scenarios.
2025-11-25 23:50:43 +01:00

280 lines
12 KiB
JSON

{
"common": {
"loading": "Caricamento...",
"error": "Errore",
"success": "Successo",
"cancel": "Annulla",
"save": "Salva",
"delete": "Elimina",
"edit": "Modifica",
"close": "Chiudi",
"confirm": "Conferma",
"back": "Indietro",
"next": "Avanti",
"submit": "Invia",
"search": "Cerca",
"filter": "Filtra",
"clear": "Cancella",
"required": "Obbligatorio",
"optional": "Facoltativo",
"yes": "Sì",
"no": "No"
},
"navigation": {
"home": "Home",
"dashboard": "Dashboard",
"settings": "Impostazioni",
"profile": "Profilo",
"logout": "Disconnetti",
"loggingOut": "Disconnessione...",
"login": "Accedi",
"register": "Registrati",
"demos": "Demo",
"design": "Design System",
"admin": "Admin",
"adminPanel": "Pannello Admin"
},
"auth": {
"login": {
"title": "Accedi al tuo account",
"subtitle": "Inserisci la tua email per accedere al tuo account",
"emailLabel": "Email",
"emailPlaceholder": "nome@esempio.com",
"passwordLabel": "Password",
"passwordPlaceholder": "Inserisci la tua password",
"rememberMe": "Ricordami",
"forgotPassword": "Password dimenticata?",
"loginButton": "Accedi",
"loginButtonLoading": "Accesso in corso...",
"noAccount": "Non hai un account?",
"registerLink": "Registrati",
"success": "Accesso effettuato con successo",
"error": "Email o password non validi",
"unexpectedError": "Si è verificato un errore imprevisto. Riprova."
},
"register": {
"title": "Crea un account",
"subtitle": "Inserisci le tue informazioni per creare un account",
"firstNameLabel": "Nome",
"firstNamePlaceholder": "Mario",
"lastNameLabel": "Cognome",
"lastNamePlaceholder": "Rossi (facoltativo)",
"emailLabel": "Email",
"emailPlaceholder": "nome@esempio.com",
"passwordLabel": "Password",
"passwordPlaceholder": "Crea una password sicura",
"confirmPasswordLabel": "Conferma Password",
"confirmPasswordPlaceholder": "Conferma la tua password",
"phoneLabel": "Numero di Telefono",
"phonePlaceholder": "+39 123 456 7890",
"registerButton": "Crea account",
"registerButtonLoading": "Creazione account...",
"hasAccount": "Hai già un account?",
"loginLink": "Accedi",
"success": "Account creato con successo",
"error": "Impossibile creare l'account",
"unexpectedError": "Si è verificato un errore imprevisto. Riprova.",
"passwordRequirements": {
"minLength": "Almeno 8 caratteri",
"hasNumber": "Contiene un numero",
"hasUppercase": "Contiene una lettera maiuscola"
},
"required": "*",
"firstNameRequired": "Il nome è obbligatorio",
"firstNameMinLength": "Il nome deve essere di almeno 2 caratteri",
"firstNameMaxLength": "Il nome non deve superare i 50 caratteri",
"lastNameMaxLength": "Il cognome non deve superare i 50 caratteri",
"passwordRequired": "La password è obbligatoria",
"passwordMinLength": "La password deve essere di almeno 8 caratteri",
"passwordNumber": "La password deve contenere almeno un numero",
"passwordUppercase": "La password deve contenere almeno una lettera maiuscola",
"confirmPasswordRequired": "Conferma la tua password",
"passwordMismatch": "Le password non corrispondono"
},
"passwordReset": {
"title": "Reimposta la tua password",
"subtitle": "Inserisci il tuo indirizzo email e ti invieremo un link per reimpostare la password",
"instructions": "Inserisci il tuo indirizzo email e ti invieremo le istruzioni per reimpostare la password.",
"emailLabel": "Email",
"emailPlaceholder": "nome@esempio.com",
"sendButton": "Invia Istruzioni di Reset",
"sendButtonLoading": "Invio in corso...",
"backToLogin": "Torna al login",
"rememberPassword": "Ricordi la tua password?",
"success": "Le istruzioni per il reset della password sono state inviate al tuo indirizzo email. Controlla la tua casella di posta.",
"error": "Impossibile inviare il link di reset",
"unexpectedError": "Si è verificato un errore imprevisto. Riprova.",
"required": "*"
},
"passwordChange": {
"title": "Cambia Password",
"currentPasswordLabel": "Password Attuale",
"newPasswordLabel": "Nuova Password",
"newPasswordPlaceholder": "Inserisci nuova password",
"confirmPasswordLabel": "Conferma Nuova Password",
"confirmPasswordPlaceholder": "Reinserisci nuova password",
"changeButton": "Cambia Password",
"success": "Password cambiata con successo",
"error": "Impossibile cambiare la password"
},
"passwordResetConfirm": {
"title": "Reimposta Password",
"instructions": "Inserisci la tua nuova password qui sotto. Assicurati che soddisfi tutti i requisiti di sicurezza.",
"newPasswordLabel": "Nuova Password",
"newPasswordPlaceholder": "Inserisci nuova password",
"confirmPasswordLabel": "Conferma Password",
"confirmPasswordPlaceholder": "Reinserisci nuova password",
"resetButton": "Reimposta Password",
"resetButtonLoading": "Reimpostazione Password...",
"rememberPassword": "Ricordi la tua password?",
"backToLogin": "Torna al login",
"success": "La tua password è stata reimpostata con successo. Ora puoi accedere con la tua nuova password.",
"unexpectedError": "Si è verificato un errore imprevisto. Riprova.",
"required": "*",
"tokenRequired": "Token di reset è obbligatorio",
"passwordRequired": "La nuova password è obbligatoria",
"passwordMinLength": "La password deve essere di almeno 8 caratteri",
"passwordNumber": "La password deve contenere almeno un numero",
"passwordUppercase": "La password deve contenere almeno una lettera maiuscola",
"confirmPasswordRequired": "Conferma la tua password",
"passwordMismatch": "Le password non corrispondono",
"passwordRequirements": {
"minLength": "Almeno 8 caratteri",
"hasNumber": "Contiene un numero",
"hasUppercase": "Contiene una lettera maiuscola"
}
},
"oauth": {
"divider": "Oppure continua con",
"loading": "Caricamento provider...",
"continueWith": "Continua con {provider}",
"signUpWith": "Registrati con {provider}",
"processing": "Completamento autenticazione...",
"authFailed": "Autenticazione Fallita",
"providerError": "Il provider di autenticazione ha restituito un errore",
"missingParams": "Parametri di autenticazione mancanti",
"stateMismatch": "Stato OAuth non valido. Riprova.",
"unexpectedError": "Si è verificato un errore durante l'autenticazione",
"backToLogin": "Torna al Login"
}
},
"settings": {
"title": "Impostazioni",
"profile": {
"title": "Informazioni Profilo",
"subtitle": "Aggiorna le tue informazioni personali. Il tuo indirizzo email è di sola lettura.",
"firstNameLabel": "Nome",
"firstNamePlaceholder": "Mario",
"lastNameLabel": "Cognome",
"lastNamePlaceholder": "Rossi",
"emailLabel": "Email",
"emailDescription": "Il tuo indirizzo email non può essere modificato da questo modulo",
"phoneLabel": "Numero di Telefono",
"updateButton": "Salva Modifiche",
"updateButtonLoading": "Salvataggio...",
"resetButton": "Ripristina",
"success": "Profilo aggiornato con successo",
"error": "Impossibile aggiornare il profilo",
"unexpectedError": "Si è verificato un errore imprevisto. Riprova.",
"firstNameRequired": "Il nome è obbligatorio",
"firstNameMinLength": "Il nome deve essere di almeno 2 caratteri",
"firstNameMaxLength": "Il nome non deve superare i 50 caratteri",
"lastNameMaxLength": "Il cognome non deve superare i 50 caratteri",
"emailInvalid": "Indirizzo email non valido"
},
"password": {
"title": "Cambia Password",
"subtitle": "Aggiorna la tua password per mantenere il tuo account sicuro. Assicurati che sia forte e univoca.",
"currentPasswordLabel": "Password Attuale",
"currentPasswordPlaceholder": "Inserisci la tua password attuale",
"newPasswordLabel": "Nuova Password",
"newPasswordPlaceholder": "Inserisci la tua nuova password",
"newPasswordDescription": "Almeno 8 caratteri con maiuscole, minuscole, numeri e caratteri speciali",
"confirmPasswordLabel": "Conferma Nuova Password",
"confirmPasswordPlaceholder": "Conferma la tua nuova password",
"updateButton": "Cambia Password",
"updateButtonLoading": "Cambio Password...",
"cancelButton": "Annulla",
"success": "Password aggiornata con successo",
"error": "Impossibile aggiornare la password",
"unexpectedError": "Si è verificato un errore imprevisto. Riprova.",
"currentPasswordRequired": "La password attuale è obbligatoria",
"newPasswordRequired": "La nuova password è obbligatoria",
"newPasswordMinLength": "La password deve essere di almeno 8 caratteri",
"newPasswordNumber": "La password deve contenere almeno un numero",
"newPasswordUppercase": "La password deve contenere almeno una lettera maiuscola",
"newPasswordLowercase": "La password deve contenere almeno una lettera minuscola",
"newPasswordSpecial": "La password deve contenere almeno un carattere speciale",
"confirmPasswordRequired": "Conferma la tua nuova password",
"passwordMismatch": "Le password non corrispondono"
},
"sessions": {
"title": "Sessioni",
"subtitle": "Gestisci le tue sessioni attive",
"currentSession": "Sessione Corrente",
"activeSession": "Attiva",
"lastActive": "Ultima attività",
"device": "Dispositivo",
"location": "Posizione",
"revokeButton": "Revoca",
"revokeAll": "Revoca Tutte le Altre Sessioni",
"success": "Sessione revocata con successo",
"error": "Impossibile revocare la sessione"
},
"preferences": {
"title": "Preferenze",
"subtitle": "Personalizza la tua esperienza",
"language": "Lingua",
"languageDescription": "Seleziona la tua lingua preferita",
"theme": "Tema",
"themeDescription": "Scegli la tua combinazione di colori",
"themeLight": "Chiaro",
"themeDark": "Scuro",
"themeSystem": "Sistema"
},
"linkedAccounts": {
"pageTitle": "Account Collegati",
"pageSubtitle": "Gestisci i tuoi account social collegati",
"title": "Account Connessi",
"description": "Collega il tuo account con i provider social per un accesso più semplice",
"linked": "Connesso",
"link": "Connetti",
"unlink": "Scollega",
"linkError": "Impossibile connettere l'account",
"unlinkError": "Impossibile scollegare l'account"
}
},
"errors": {
"notFound": "Pagina non trovata",
"notFoundDescription": "La pagina che stai cercando non esiste.",
"unauthorized": "Non autorizzato",
"unauthorizedDescription": "Non hai i permessi per accedere a questa pagina.",
"serverError": "Errore del server",
"serverErrorDescription": "Qualcosa è andato storto dal nostro lato.",
"networkError": "Errore di rete",
"networkErrorDescription": "Controlla la tua connessione internet.",
"validation": {
"required": "Questo campo è obbligatorio",
"email": "Inserisci un indirizzo email valido",
"minLength": "Deve essere di almeno {min} caratteri",
"maxLength": "Deve essere al massimo {max} caratteri",
"passwordMismatch": "Le password non corrispondono",
"passwordWeak": "La password è troppo debole"
}
},
"validation": {
"required": "Questo campo è obbligatorio",
"email": "Indirizzo email non valido",
"minLength": "Deve contenere almeno 8 caratteri",
"maxLength": "Massimo {count} caratteri consentiti",
"pattern": "Formato non valido",
"passwordMismatch": "Le password non corrispondono"
},
"locale": {
"en": "Inglese",
"it": "Italiano",
"switchLanguage": "Cambia lingua",
"currentLanguage": "Lingua corrente"
}
}