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.
94 lines
5.8 KiB
TypeScript
94 lines
5.8 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const login: TranslationStrings = {
|
||
'login.error': 'Inicio de sesión fallido. Revisa tus credenciales.',
|
||
'login.tagline': 'Tus viajes.\nTu plan.',
|
||
'login.description':
|
||
'Planifica viajes en colaboración con mapas interactivos, presupuestos y sincronización en tiempo real.',
|
||
'login.features.maps': 'Mapas interactivos',
|
||
'login.features.mapsDesc': 'Google Places, rutas y agrupación',
|
||
'login.features.realtime': 'Sincronización en tiempo real',
|
||
'login.features.realtimeDesc': 'Planificad juntos mediante WebSocket',
|
||
'login.features.budget': 'Control de presupuesto',
|
||
'login.features.budgetDesc': 'Categorías, gráficos y costes por persona',
|
||
'login.features.collab': 'Colaboración',
|
||
'login.features.collabDesc': 'Multiusuario con viajes compartidos',
|
||
'login.features.packing': 'Listas de equipaje',
|
||
'login.features.packingDesc': 'Categorías, progreso y sugerencias',
|
||
'login.features.bookings': 'Reservas',
|
||
'login.features.bookingsDesc': 'Vuelos, hoteles, restaurantes y más',
|
||
'login.features.files': 'Documentos',
|
||
'login.features.filesDesc': 'Sube y gestiona documentos',
|
||
'login.features.routes': 'Rutas inteligentes',
|
||
'login.features.routesDesc': 'Optimización automática y exportación a Google Maps',
|
||
'login.selfHosted': 'Autoalojado · Código abierto · Tus datos siguen siendo tuyos',
|
||
'login.title': 'Iniciar sesión',
|
||
'login.subtitle': 'Bienvenido de nuevo',
|
||
'login.signingIn': 'Iniciando sesión…',
|
||
'login.signIn': 'Entrar',
|
||
'login.createAdmin': 'Crear cuenta de administrador',
|
||
'login.createAdminHint': 'Configura la primera cuenta administradora de TREK.',
|
||
'login.setNewPassword': 'Establecer nueva contraseña',
|
||
'login.setNewPasswordHint': 'Debe cambiar su contraseña antes de continuar.',
|
||
'login.createAccount': 'Crear cuenta',
|
||
'login.createAccountHint': 'Crea una cuenta nueva.',
|
||
'login.creating': 'Creando…',
|
||
'login.noAccount': '¿No tienes cuenta?',
|
||
'login.hasAccount': '¿Ya tienes cuenta?',
|
||
'login.register': 'Registrarse',
|
||
'login.emailPlaceholder': 'tu@correo.com',
|
||
'login.username': 'Usuario',
|
||
'login.oidc.registrationDisabled': 'El registro está desactivado. Contacta con tu administrador.',
|
||
'login.oidc.noEmail': 'No se recibió ningún correo del proveedor.',
|
||
'login.mfaTitle': 'Autenticación de dos factores',
|
||
'login.mfaSubtitle': 'Introduce el código de 6 dígitos de tu app de autenticación.',
|
||
'login.mfaCodeLabel': 'Código de verificación',
|
||
'login.mfaCodeRequired': 'Introduce el código de tu app de autenticación.',
|
||
'login.mfaHint': 'Abre Google Authenticator, Authy u otra app TOTP.',
|
||
'login.mfaBack': '← Volver al inicio de sesión',
|
||
'login.mfaVerify': 'Verificar',
|
||
'login.invalidInviteLink': 'Enlace de invitación inválido o expirado',
|
||
'login.oidcFailed': 'Error de inicio de sesión OIDC',
|
||
'login.usernameRequired': 'El nombre de usuario es obligatorio',
|
||
'login.passwordMinLength': 'La contraseña debe tener al menos 8 caracteres',
|
||
'login.forgotPassword': '¿Olvidaste tu contraseña?',
|
||
'login.rememberMe': 'Recuérdame',
|
||
'login.forgotPasswordTitle': 'Restablecer tu contraseña',
|
||
'login.forgotPasswordBody':
|
||
'Introduce la dirección de correo con la que te registraste. Si existe una cuenta, enviaremos un enlace.',
|
||
'login.forgotPasswordSubmit': 'Enviar enlace',
|
||
'login.forgotPasswordSentTitle': 'Revisa tu correo',
|
||
'login.forgotPasswordSentBody':
|
||
'Si existe una cuenta con ese correo, el enlace de restablecimiento está en camino. Caduca en 60 minutos.',
|
||
'login.forgotPasswordSmtpHintOff':
|
||
'Nota: tu administrador no ha configurado SMTP, así que el enlace de restablecimiento se escribirá en la consola del servidor en lugar de enviarse por correo.',
|
||
'login.backToLogin': 'Volver al inicio de sesión',
|
||
'login.newPassword': 'Nueva contraseña',
|
||
'login.confirmPassword': 'Confirmar nueva contraseña',
|
||
'login.passwordsDontMatch': 'Las contraseñas no coinciden',
|
||
'login.mfaCode': 'Código 2FA',
|
||
'login.resetPasswordTitle': 'Establecer una nueva contraseña',
|
||
'login.resetPasswordBody': 'Elige una contraseña segura que no hayas usado aquí antes. Mínimo 8 caracteres.',
|
||
'login.resetPasswordMfaBody': 'Introduce tu código 2FA o un código de respaldo para completar el restablecimiento.',
|
||
'login.resetPasswordSubmit': 'Restablecer contraseña',
|
||
'login.resetPasswordVerify': 'Verificar y restablecer',
|
||
'login.resetPasswordSuccessTitle': 'Contraseña actualizada',
|
||
'login.resetPasswordSuccessBody': 'Ya puedes iniciar sesión con tu nueva contraseña.',
|
||
'login.resetPasswordInvalidLink': 'Enlace de restablecimiento no válido',
|
||
'login.resetPasswordInvalidLinkBody': 'Este enlace falta o está roto. Solicita uno nuevo para continuar.',
|
||
'login.resetPasswordFailed': 'Restablecimiento fallido. El enlace puede haber caducado.',
|
||
'login.oidc.tokenFailed': 'La autenticación falló.',
|
||
'login.oidc.invalidState': 'Sesión no válida. Inténtalo de nuevo.',
|
||
'login.demoFailed': 'Falló el acceso a la demo',
|
||
'login.oidcSignIn': 'Entrar con {name}',
|
||
'login.demoHint': 'Prueba la demo: no necesitas registrarte',
|
||
'login.oidcOnly': 'La autenticación por contraseña está desactivada. Por favor, inicia sesión con tu proveedor SSO.',
|
||
'login.oidcLoggedOut': 'Has cerrado sesión. Vuelve a iniciar sesión con tu proveedor SSO.',
|
||
'login.passkey.signIn': 'Iniciar sesión con una passkey',
|
||
'login.passkey.failed': 'Error al iniciar sesión con la passkey. Inténtalo de nuevo.',
|
||
'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;
|