strapi-plugin-magic-sessionmanager 4.0.1 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +2 -2
  2. package/admin/src/components/OnlineUsersWidget.jsx +11 -7
  3. package/admin/src/components/SessionDetailModal.jsx +42 -38
  4. package/admin/src/components/SessionInfoPanel.jsx +29 -20
  5. package/admin/src/index.js +9 -0
  6. package/admin/src/pages/HomePage.jsx +128 -161
  7. package/admin/src/pages/License.jsx +3 -3
  8. package/admin/src/pages/Settings.jsx +139 -135
  9. package/admin/src/pages/UpgradePage.jsx +448 -0
  10. package/admin/src/pluginId.js +1 -0
  11. package/admin/src/translations/de.json +294 -15
  12. package/admin/src/translations/en.json +293 -14
  13. package/admin/src/translations/es.json +284 -18
  14. package/admin/src/translations/fr.json +284 -18
  15. package/admin/src/translations/pt.json +284 -18
  16. package/admin/src/utils/theme.js +85 -0
  17. package/dist/_chunks/{Analytics-Dv9f_0eZ.mjs → Analytics-DTE_zmRV.mjs} +2 -2
  18. package/dist/_chunks/{Analytics-BBdv1I5y.js → Analytics-lw_JaOVy.js} +2 -2
  19. package/dist/_chunks/{App-CJaZPNjt.js → App-DDKYCjKw.js} +216 -206
  20. package/dist/_chunks/{App-CIQ-7sa7.mjs → App-DJW1ZNl5.mjs} +216 -206
  21. package/dist/_chunks/{License-nrmFxoBm.mjs → License-DaOFuImm.mjs} +4 -8
  22. package/dist/_chunks/{License-D24rgaZQ.js → License-Tk-6UfPl.js} +4 -8
  23. package/dist/_chunks/{OnlineUsersWidget-B8JS1xZu.js → OnlineUsersWidget-C1qTpsws.js} +11 -7
  24. package/dist/_chunks/{OnlineUsersWidget-ArMl0nen.mjs → OnlineUsersWidget-CADphbXG.mjs} +11 -7
  25. package/dist/_chunks/{Settings-D5dLEGc_.mjs → Settings-C9xvckgq.mjs} +191 -179
  26. package/dist/_chunks/{Settings-CqxgjU0y.js → Settings-DyEAuTNQ.js} +191 -179
  27. package/dist/_chunks/UpgradePage-Dssk8A0Z.js +354 -0
  28. package/dist/_chunks/UpgradePage-cINvE9zY.mjs +352 -0
  29. package/dist/_chunks/de-CDA1V0rF.mjs +292 -0
  30. package/dist/_chunks/de-I-Q-pWqu.js +292 -0
  31. package/dist/_chunks/en-Bd7_h-4e.js +292 -0
  32. package/dist/_chunks/en-DzmOCyzQ.mjs +292 -0
  33. package/dist/_chunks/es-BcAx18XG.js +277 -0
  34. package/dist/_chunks/es-Cx-SN6qV.mjs +277 -0
  35. package/dist/_chunks/fr-DCzYMuJ-.js +277 -0
  36. package/dist/_chunks/fr-DXlXE5Eo.mjs +277 -0
  37. package/dist/_chunks/{index-WH04CS1c.js → index-CWcvrfXc.js} +45 -42
  38. package/dist/_chunks/{index-Duk1_Wrz.mjs → index-DQO9bNP7.mjs} +45 -42
  39. package/dist/_chunks/pt-21-MAb72.js +277 -0
  40. package/dist/_chunks/pt-zsdTSjba.mjs +277 -0
  41. package/dist/_chunks/{useLicense-BwOlCyhc.js → useLicense-DtvJOszr.js} +1 -1
  42. package/dist/_chunks/{useLicense-Ce8GaxB0.mjs → useLicense-DxbD4Wf8.mjs} +1 -1
  43. package/dist/admin/index.js +1 -1
  44. package/dist/admin/index.mjs +1 -1
  45. package/dist/server/index.js +1 -1
  46. package/dist/server/index.mjs +1 -1
  47. package/package.json +1 -1
  48. package/dist/_chunks/de-BxFx1pwE.js +0 -23
  49. package/dist/_chunks/de-CdO3s01z.mjs +0 -23
  50. package/dist/_chunks/en-CsPpPJL3.mjs +0 -23
  51. package/dist/_chunks/en-RqmpDHdS.js +0 -23
  52. package/dist/_chunks/es-CuLHazN1.js +0 -23
  53. package/dist/_chunks/es-Dkmjhy9c.mjs +0 -23
  54. package/dist/_chunks/fr-BAJp2yhI.js +0 -23
  55. package/dist/_chunks/fr-Bssg_3UF.mjs +0 -23
  56. package/dist/_chunks/pt-BAP9cKs3.js +0 -23
  57. package/dist/_chunks/pt-BVNoNcuY.mjs +0 -23
@@ -1,21 +1,287 @@
1
1
  {
2
- "plugin.name": "Gestor de Sesiones",
3
- "plugin.description": "Seguimiento de inicio/cierre de sesión y actividad de usuarios",
4
- "settings.section": "Gestor de Sesiones",
2
+ "plugin.name": "Session Manager",
3
+ "plugin.description": "Rastrear inicio/cierre de sesión y actividad de usuarios",
4
+
5
+ "settings.section": "Session Manager",
5
6
  "settings.sessions": "Sesiones Activas",
6
- "settings.emailTemplates.title": "Plantillas de Correo",
7
- "settings.emailTemplates.description": "Personalizar plantillas de notificación por correo con variables dinámicas",
8
- "settings.emailTemplates.validate": "Validar",
9
- "settings.emailTemplates.loadDefault": "Cargar Plantilla Predeterminada",
10
- "settings.emailTemplates.subject": "Asunto del Correo",
11
- "settings.emailTemplates.htmlTemplate": "Plantilla HTML",
12
- "settings.emailTemplates.textTemplate": "Plantilla de Texto (Respaldo)",
13
- "settings.emailTemplates.variables": "Variables Disponibles (clic para copiar)",
14
- "settings.emailTemplates.validation.success": "¡Plantilla válida! Se encontraron {count} variables.",
15
- "settings.emailTemplates.validation.warning": "No se encontraron variables en la plantilla. Agregue al menos una variable.",
16
- "settings.emailTemplates.defaultLoaded": "¡Plantilla predeterminada cargada!",
17
- "settings.emailTemplates.suspiciousLogin": "Inicio de Sesión Sospechoso",
18
- "settings.emailTemplates.newLocation": "Nueva Ubicación",
19
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
7
+ "settings.upgrade": "Actualizar",
8
+ "settings.general": "General",
9
+ "settings.analytics": "Analíticas",
10
+ "settings.license": "Licencia",
11
+
12
+ "widget.online-users.title": "Usuarios en Línea",
13
+ "widget.stats.onlineNow": "En línea ahora",
14
+ "widget.stats.offline": "Desconectado",
15
+ "widget.stats.last15min": "Últimos 15 min",
16
+ "widget.stats.last30min": "Últimos 30 min",
17
+ "widget.stats.totalUsers": "Usuarios totales",
18
+ "widget.stats.blocked": "Bloqueados",
19
+
20
+ "homepage.title": "Session Manager",
21
+ "homepage.subtitle": "Monitorear y gestionar sesiones de usuario en tiempo real",
22
+ "homepage.stats.active": "Activo",
23
+ "homepage.stats.idle": "Inactivo",
24
+ "homepage.stats.loggedOut": "Desconectado",
25
+ "homepage.stats.terminated": "Terminado",
26
+ "homepage.stats.total": "Total",
27
+ "homepage.export.csv": "Exportar CSV",
28
+ "homepage.export.json": "Exportar JSON",
29
+ "homepage.loading": "Cargando sesiones...",
30
+ "homepage.allSessions": "Todas las Sesiones",
31
+ "homepage.search.placeholder": "Buscar por usuario, dirección IP o dispositivo...",
32
+ "homepage.filter.all": "Todas las Sesiones",
33
+ "homepage.filter.active": "Activas (menos de 15 min)",
34
+ "homepage.filter.idle": "Inactivas (más de 15 min)",
35
+ "homepage.filter.loggedout": "Desconectadas",
36
+ "homepage.filter.terminated": "Terminadas",
37
+ "homepage.entries.10": "10 entradas",
38
+ "homepage.entries.25": "25 entradas",
39
+ "homepage.entries.50": "50 entradas",
40
+ "homepage.entries.100": "100 entradas",
41
+ "homepage.showing": "Mostrando {count} de {total} sesiones",
42
+ "homepage.showingFiltered": "Mostrando {count} de {total} sesiones (filtrado por \"{query}\")",
43
+ "homepage.table.status": "Estado",
44
+ "homepage.table.user": "Usuario",
45
+ "homepage.table.device": "Dispositivo",
46
+ "homepage.table.ipAddress": "Dirección IP",
47
+ "homepage.table.loginTime": "Hora de inicio",
48
+ "homepage.table.lastActive": "Última actividad",
49
+ "homepage.table.actions": "Acciones",
50
+ "homepage.status.active": "Activo",
51
+ "homepage.status.idle": "Inactivo",
52
+ "homepage.status.loggedOut": "Desconectado",
53
+ "homepage.status.terminated": "Terminado",
54
+ "homepage.user.unknown": "Desconocido",
55
+ "homepage.time.minAgo": "hace {minutes} min",
56
+ "homepage.actions.viewDetails": "Ver Detalles",
57
+ "homepage.actions.terminate": "Terminar (Cerrar sesión)",
58
+ "homepage.actions.alreadyInactive": "Ya inactivo",
59
+ "homepage.actions.deletePermanently": "Eliminar Permanentemente",
60
+ "homepage.empty.title": "Aún no hay sesiones",
61
+ "homepage.empty.description": "Las sesiones aparecerán aquí cuando los usuarios inicien sesión en su aplicación",
62
+ "homepage.noResults.title": "No se encontraron sesiones",
63
+ "homepage.noResults.description": "Intente ajustar su consulta de búsqueda o filtros para encontrar sesiones",
64
+ "homepage.confirm.terminate": "¿Está seguro de que desea terminar esta sesión?\n\nEsto establecerá isActive en false (el usuario cerrará sesión).",
65
+ "homepage.confirm.delete": "[ADVERTENCIA] ¡Esto ELIMINARÁ PERMANENTEMENTE esta sesión de la base de datos!\n\nEsta acción no se puede deshacer.\n\n¿Está seguro?",
66
+
67
+ "modal.title": "Detalles de Sesión",
68
+ "modal.id": "ID: {id}",
69
+ "modal.status.online": "EN LÍNEA",
70
+ "modal.status.offline": "DESCONECTADO",
71
+ "modal.section.user": "Usuario",
72
+ "modal.section.device": "Dispositivo",
73
+ "modal.section.timeline": "Cronología",
74
+ "modal.section.security": "Ubicación y Seguridad",
75
+ "modal.section.technical": "Detalles Técnicos",
76
+ "modal.user.username": "Nombre de usuario",
77
+ "modal.user.email": "Correo electrónico",
78
+ "modal.user.id": "ID de Usuario",
79
+ "modal.user.na": "N/D",
80
+ "modal.device.device": "Dispositivo",
81
+ "modal.device.browser": "Navegador",
82
+ "modal.device.os": "Sistema Operativo",
83
+ "modal.device.ip": "IP",
84
+ "modal.timeline.login": "Inicio de sesión",
85
+ "modal.timeline.lastActive": "Última actividad",
86
+ "modal.timeline.idleTime": "Tiempo inactivo",
87
+ "modal.timeline.logout": "Cierre de sesión",
88
+ "modal.timeline.minutes": "{minutes} min",
89
+ "modal.security.loading": "Cargando datos de ubicación...",
90
+ "modal.security.country": "País",
91
+ "modal.security.city": "Ciudad",
92
+ "modal.security.timezone": "Zona horaria",
93
+ "modal.security.score": "Seguridad",
94
+ "modal.security.vpn": "VPN",
95
+ "modal.security.proxy": "Proxy",
96
+ "modal.security.vpnWarning": "[ADVERTENCIA] Sí",
97
+ "modal.security.no": "No",
98
+ "modal.premium.title": "Análisis de Ubicación y Seguridad",
99
+ "modal.premium.description": "Desbloquee funciones premium para obtener geolocalización IP, puntuación de seguridad y detección de VPN/Proxy para cada sesión",
100
+ "modal.premium.upgrade": "Actualizar a Premium",
101
+ "modal.technical.show": "Mostrar Detalles",
102
+ "modal.technical.hide": "Ocultar Detalles",
103
+ "modal.actions.close": "Cerrar",
104
+ "modal.actions.terminate": "Terminar Sesión",
105
+ "modal.confirm.terminate": "¿Está seguro de que desea terminar esta sesión?",
106
+
107
+ "panel.title": "Info de Sesión",
108
+ "panel.loading": "Cargando...",
109
+ "panel.status.active": "ACTIVO",
110
+ "panel.status.offline": "DESCONECTADO",
111
+ "panel.sessions.count": "{count} sesión(es) activa(s)",
112
+ "panel.sessions.title": "Sesiones Activas",
113
+ "panel.sessions.active": "Activo",
114
+ "panel.sessions.activeNow": "Activo ahora",
115
+ "panel.sessions.activeAgo": "Activo hace {minutes} min",
116
+ "panel.sessions.more": "+{count} sesión(es) más",
117
+ "panel.blocked.title": "Usuario bloqueado",
118
+ "panel.blocked.description": "Autenticación deshabilitada",
119
+ "panel.empty.title": "Sin sesiones activas",
120
+ "panel.empty.description": "El usuario aún no ha iniciado sesión",
121
+ "panel.actions.title": "Acciones",
122
+ "panel.actions.terminateAll": "Terminar Todas las Sesiones",
123
+ "panel.actions.blockUser": "Bloquear Usuario",
124
+ "panel.actions.unblockUser": "Desbloquear Usuario",
125
+
126
+ "settings.title": "Configuración de Session Manager",
127
+ "settings.subtitle": "Configurar seguimiento de sesiones, seguridad y notificaciones por correo",
128
+ "settings.save": "Guardar Cambios",
129
+ "settings.saving": "Guardando...",
130
+ "settings.noChanges": "Sin Cambios",
131
+ "settings.reset": "Restablecer",
132
+ "settings.license.title": "Estado Actual de Licencia",
133
+ "settings.license.premium": "Premium",
134
+ "settings.license.advanced": "Advanced",
135
+ "settings.license.enterprise": "Enterprise",
136
+
137
+ "settings.general.title": "Configuración General",
138
+ "settings.general.description": "Configuración básica de seguimiento de sesiones",
139
+ "settings.general.timeout.title": "TIEMPO DE ESPERA DE SESIÓN",
140
+ "settings.general.timeout.inactivity": "Tiempo de Inactividad",
141
+ "settings.general.timeout.inactivityHint": "Las sesiones inactivas por más de {minutes} minutos se marcarán como desconectadas",
142
+ "settings.general.timeout.5min": "5 minutos (Muy estricto)",
143
+ "settings.general.timeout.10min": "10 minutos (Estricto)",
144
+ "settings.general.timeout.15min": "15 minutos (Recomendado)",
145
+ "settings.general.timeout.30min": "30 minutos (Moderado)",
146
+ "settings.general.timeout.1hour": "1 hora (Relajado)",
147
+ "settings.general.timeout.2hours": "2 horas (Muy relajado)",
148
+ "settings.general.rateLimit.title": "Límite de Última Vista",
149
+ "settings.general.rateLimit.hint": "Evita escrituras excesivas en la base de datos. Las actualizaciones se limitan a una vez cada {seconds} segundos",
150
+ "settings.general.rateLimit.10sec": "10 segundos",
151
+ "settings.general.rateLimit.30sec": "30 segundos (Recomendado)",
152
+ "settings.general.rateLimit.1min": "1 minuto",
153
+ "settings.general.rateLimit.2min": "2 minutos",
154
+ "settings.general.rateLimit.5min": "5 minutos",
155
+ "settings.general.cleanup.title": "LIMPIEZA Y RETENCIÓN AUTOMÁTICA",
156
+ "settings.general.cleanup.interval": "Intervalo de Limpieza",
157
+ "settings.general.cleanup.intervalHint": "Las sesiones inactivas se limpian automáticamente cada {minutes} minutos",
158
+ "settings.general.cleanup.15min": "15 minutos",
159
+ "settings.general.cleanup.30min": "30 minutos (Recomendado)",
160
+ "settings.general.cleanup.1hour": "1 hora",
161
+ "settings.general.cleanup.2hours": "2 horas",
162
+ "settings.general.retention.title": "Período de Retención",
163
+ "settings.general.retention.hint": "Las sesiones antiguas se eliminan después de {days}",
164
+ "settings.general.retention.hintNever": "Las sesiones antiguas nunca se eliminan",
165
+ "settings.general.retention.7days": "7 días",
166
+ "settings.general.retention.30days": "30 días",
167
+ "settings.general.retention.60days": "60 días",
168
+ "settings.general.retention.90days": "90 días (Recomendado)",
169
+ "settings.general.retention.180days": "180 días",
170
+ "settings.general.retention.1year": "1 año",
171
+ "settings.general.retention.forever": "Para siempre",
172
+ "settings.general.danger.title": "Zona de Peligro",
173
+ "settings.general.danger.description": "Limpiar Todas Inactivas: Elimina permanentemente todas las sesiones inactivas. Esto no se puede deshacer.",
174
+ "settings.general.danger.cleanNow": "Limpiar Ahora",
175
+ "settings.general.danger.confirm": "[ADVERTENCIA] Esto eliminará permanentemente TODAS las sesiones inactivas.\n\n¿Continuar?",
176
+
177
+ "settings.security.title": "Configuración de Seguridad",
178
+ "settings.security.description": "Políticas de seguridad y protección contra amenazas",
179
+ "settings.security.options": "OPCIONES DE SEGURIDAD",
180
+ "settings.security.encryption.title": "Generador de Clave de Cifrado JWT",
181
+ "settings.security.encryption.description": "Genere una clave de cifrado segura de 32 caracteres para almacenamiento de tokens JWT. Esta clave se usa para cifrar tokens antes de guardarlos en la base de datos.",
182
+ "settings.security.encryption.important": "Importante",
183
+ "settings.security.encryption.envHint": "Agregue esta clave a su archivo .env como SESSION_ENCRYPTION_KEY para producción.",
184
+ "settings.security.encryption.label": "Clave de Cifrado Generada",
185
+ "settings.security.encryption.placeholder": "Haga clic en 'Generar Clave' para crear una clave segura",
186
+ "settings.security.encryption.show": "Mostrar",
187
+ "settings.security.encryption.hide": "Ocultar",
188
+ "settings.security.encryption.generate": "Generar Clave",
189
+ "settings.security.encryption.copy": "Copiar al Portapapeles",
190
+ "settings.security.encryption.copyEnv": "Copiar para .env",
191
+ "settings.security.encryption.envLabel": "Agregar al archivo .env:",
192
+ "settings.security.blockSuspicious.title": "Bloquear Sesiones Sospechosas",
193
+ "settings.security.blockSuspicious.description": "Bloquear automáticamente sesiones de VPNs, proxys o IPs de amenazas",
194
+ "settings.security.geolocation.title": "Geolocalización IP",
195
+ "settings.security.geolocation.description": "Obtener datos de ubicación para cada sesión (Premium)",
196
+ "settings.security.scoring.title": "Puntuación de Seguridad",
197
+ "settings.security.scoring.description": "Calcular puntuaciones de seguridad y detectar amenazas (Premium)",
198
+ "settings.security.maxFailed.title": "Máx. Intentos de Inicio Fallidos",
199
+ "settings.security.maxFailed.hint": "El usuario será bloqueado después de {count} intentos fallidos",
200
+
201
+ "settings.email.title": "Notificaciones por Correo (Advanced)",
202
+ "settings.email.description": "Alertas por correo para eventos de seguridad",
203
+ "settings.email.alerts.title": "ALERTAS POR CORREO",
204
+ "settings.email.alerts.subtitle": "Enviar alertas de seguridad a usuarios por correo electrónico",
205
+ "settings.email.enable.title": "Habilitar Alertas por Correo",
206
+ "settings.email.enable.description": "Enviar alertas de seguridad para inicios sospechosos, nuevas ubicaciones y uso de VPN/Proxy",
207
+ "settings.email.types.title": "TIPOS DE ALERTA",
208
+ "settings.email.types.suspicious": "Inicio Sospechoso",
209
+ "settings.email.types.newLocation": "Nueva Ubicación",
210
+ "settings.email.types.vpnProxy": "VPN/Proxy",
211
+ "settings.email.templates.title": "PLANTILLAS DE CORREO",
212
+ "settings.email.templates.subtitle": "Personalizar plantillas de notificación con variables dinámicas",
213
+ "settings.email.templates.subject": "Asunto del Correo",
214
+ "settings.email.templates.subjectPlaceholder": "Ingrese el asunto del correo...",
215
+ "settings.email.templates.variables": "Variables Disponibles (clic para copiar)",
216
+ "settings.email.templates.html.title": "Plantilla HTML",
217
+ "settings.email.templates.html.badge": "Plantilla Principal",
218
+ "settings.email.templates.html.description": "Plantilla HTML para notificaciones. Use variables como {{user.email}} para contenido dinámico.",
219
+ "settings.email.templates.html.loadDefault": "Cargar Predeterminado",
220
+ "settings.email.templates.html.copy": "Copiar Plantilla",
221
+ "settings.email.templates.html.validate": "Validar",
222
+ "settings.email.templates.html.info": "Info de Plantilla",
223
+ "settings.email.templates.text.title": "Plantilla de Texto",
224
+ "settings.email.templates.text.badge": "Alternativa",
225
+ "settings.email.templates.text.description": "Versión de texto plano (sin HTML) como alternativa para clientes de correo antiguos",
226
+ "settings.email.templates.text.loadDefault": "Cargar Predeterminado",
227
+ "settings.email.templates.text.copy": "Copiar Plantilla",
228
+ "settings.email.templates.tab.suspicious": "Inicio Sospechoso",
229
+ "settings.email.templates.tab.newLocation": "Nueva Ubicación",
230
+ "settings.email.templates.tab.vpnProxy": "VPN/Proxy",
231
+
232
+ "settings.webhooks.title": "Integración de Webhooks (Advanced)",
233
+ "settings.webhooks.description": "Integración con Discord y Slack",
234
+ "settings.webhooks.enable.title": "Habilitar Webhooks",
235
+ "settings.webhooks.enable.description": "Enviar eventos de sesión a Discord, Slack o endpoints personalizados",
236
+ "settings.webhooks.discord.title": "URL de Webhook de Discord",
237
+ "settings.webhooks.discord.placeholder": "https://discord.com/api/webhooks/123456789/abcdefghijklmnopqrstuvwxyz...",
238
+ "settings.webhooks.discord.hint": "Opcional: Publicar alertas de sesión en su canal de Discord",
239
+ "settings.webhooks.slack.title": "URL de Webhook de Slack",
240
+ "settings.webhooks.slack.placeholder": "https://hooks.slack.com/services/XXXX/XXXX/XXXX",
241
+ "settings.webhooks.slack.hint": "Opcional: Publicar alertas de sesión en su workspace de Slack",
242
+ "settings.webhooks.characters": "{count} caracteres",
243
+
244
+ "settings.footer.title": "Configuración Respaldada en Base de Datos",
245
+ "settings.footer.description": "Todas las configuraciones se almacenan en su base de datos Strapi y se comparten entre todos los usuarios administradores. Los cambios surten efecto inmediatamente - ¡no se requiere reinicio del servidor! Plantillas de correo, webhooks y opciones de seguridad se gestionan desde esta interfaz.",
246
+
247
+ "common.loading": "Cargando...",
248
+ "common.save": "Guardar",
249
+ "common.cancel": "Cancelar",
250
+ "common.close": "Cerrar",
251
+ "common.delete": "Eliminar",
252
+ "common.confirm": "Confirmar",
253
+ "common.yes": "Sí",
254
+ "common.no": "No",
255
+ "common.on": "el",
256
+ "common.active": "ACTIVO",
257
+ "common.inactive": "INACTIVO",
258
+
259
+ "notifications.success.saved": "¡Configuración guardada exitosamente en la base de datos!",
260
+ "notifications.success.deleted": "Sesión eliminada permanentemente",
261
+ "notifications.success.terminated": "Sesión terminada exitosamente",
262
+ "notifications.success.terminatedAll": "Todas las sesiones terminadas exitosamente",
263
+ "notifications.success.blocked": "Usuario bloqueado exitosamente",
264
+ "notifications.success.unblocked": "Usuario desbloqueado exitosamente",
265
+ "notifications.success.exported": "{count} sesiones exportadas a {format}",
266
+ "notifications.success.cleaned": "¡{count} sesiones inactivas eliminadas exitosamente!",
267
+ "notifications.success.keyCopied": "¡Clave de cifrado copiada al portapapeles!",
268
+ "notifications.success.keyGenerated": "¡Clave de cifrado de 32 caracteres generada!",
269
+ "notifications.success.envCopied": "¡Copiado en formato .env!",
270
+ "notifications.success.templateCopied": "¡Plantilla copiada!",
271
+ "notifications.success.htmlCopied": "¡Plantilla HTML copiada!",
272
+ "notifications.success.textCopied": "¡Plantilla de texto copiada!",
273
+ "notifications.success.defaultLoaded": "¡Plantilla predeterminada cargada!",
274
+ "notifications.success.variableCopied": "¡{variable} copiado!",
275
+ "notifications.success.validated": "¡Plantilla válida! {found}/{total} variables encontradas.",
276
+ "notifications.warning.premiumRequired": "Se requiere licencia Premium para la función de exportación",
277
+ "notifications.warning.noVariables": "[ADVERTENCIA] No se encontraron variables. Agregue al menos una variable.",
278
+ "notifications.warning.settingsLoad": "No se pudo cargar la configuración del servidor. Usando valores predeterminados.",
279
+ "notifications.error.terminate": "No se pudo terminar la sesión",
280
+ "notifications.error.terminateAll": "No se pudieron terminar las sesiones",
281
+ "notifications.error.delete": "No se pudo eliminar la sesión",
282
+ "notifications.error.block": "No se pudo actualizar el estado del usuario",
283
+ "notifications.error.save": "No se pudo guardar la configuración en el servidor",
284
+ "notifications.error.clean": "No se pudieron eliminar las sesiones inactivas",
285
+ "notifications.error.export": "No se pudieron exportar las sesiones",
286
+ "notifications.info.templateStats": "La plantilla tiene {lines} líneas y {chars} caracteres"
20
287
  }
21
-
@@ -1,21 +1,287 @@
1
1
  {
2
- "plugin.name": "Gestionnaire de Sessions",
3
- "plugin.description": "Suivi des connexions/déconnexions et activité des utilisateurs",
4
- "settings.section": "Gestionnaire de Sessions",
2
+ "plugin.name": "Session Manager",
3
+ "plugin.description": "Suivre les connexions/déconnexions et l'activité des sessions",
4
+
5
+ "settings.section": "Session Manager",
5
6
  "settings.sessions": "Sessions Actives",
6
- "settings.emailTemplates.title": "Modèles d'Email",
7
- "settings.emailTemplates.description": "Personnaliser les modèles de notification par email avec des variables dynamiques",
8
- "settings.emailTemplates.validate": "Valider",
9
- "settings.emailTemplates.loadDefault": "Charger le Modèle par Défaut",
10
- "settings.emailTemplates.subject": "Objet de l'Email",
11
- "settings.emailTemplates.htmlTemplate": "Modèle HTML",
12
- "settings.emailTemplates.textTemplate": "Modèle Texte (Secours)",
13
- "settings.emailTemplates.variables": "Variables Disponibles (cliquez pour copier)",
14
- "settings.emailTemplates.validation.success": "Modèle valide! {count} variables trouvées.",
15
- "settings.emailTemplates.validation.warning": "Aucune variable trouvée dans le modèle. Ajoutez au moins une variable.",
16
- "settings.emailTemplates.defaultLoaded": "Modèle par défaut chargé!",
17
- "settings.emailTemplates.suspiciousLogin": "Connexion Suspecte",
18
- "settings.emailTemplates.newLocation": "Nouvelle Localisation",
19
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
7
+ "settings.upgrade": "Mise à niveau",
8
+ "settings.general": "Général",
9
+ "settings.analytics": "Analyses",
10
+ "settings.license": "Licence",
11
+
12
+ "widget.online-users.title": "Utilisateurs en Ligne",
13
+ "widget.stats.onlineNow": "En ligne maintenant",
14
+ "widget.stats.offline": "Hors ligne",
15
+ "widget.stats.last15min": "15 dernières min",
16
+ "widget.stats.last30min": "30 dernières min",
17
+ "widget.stats.totalUsers": "Utilisateurs totaux",
18
+ "widget.stats.blocked": "Bloqués",
19
+
20
+ "homepage.title": "Session Manager",
21
+ "homepage.subtitle": "Surveiller et gérer les sessions utilisateur en temps réel",
22
+ "homepage.stats.active": "Actif",
23
+ "homepage.stats.idle": "Inactif",
24
+ "homepage.stats.loggedOut": "Déconnecté",
25
+ "homepage.stats.terminated": "Terminé",
26
+ "homepage.stats.total": "Total",
27
+ "homepage.export.csv": "Exporter CSV",
28
+ "homepage.export.json": "Exporter JSON",
29
+ "homepage.loading": "Chargement des sessions...",
30
+ "homepage.allSessions": "Toutes les Sessions",
31
+ "homepage.search.placeholder": "Rechercher par utilisateur, adresse IP ou appareil...",
32
+ "homepage.filter.all": "Toutes les Sessions",
33
+ "homepage.filter.active": "Actives (moins de 15 min)",
34
+ "homepage.filter.idle": "Inactives (plus de 15 min)",
35
+ "homepage.filter.loggedout": "Déconnectées",
36
+ "homepage.filter.terminated": "Terminées",
37
+ "homepage.entries.10": "10 entrées",
38
+ "homepage.entries.25": "25 entrées",
39
+ "homepage.entries.50": "50 entrées",
40
+ "homepage.entries.100": "100 entrées",
41
+ "homepage.showing": "Affichage de {count} sur {total} sessions",
42
+ "homepage.showingFiltered": "Affichage de {count} sur {total} sessions (filtré par \"{query}\")",
43
+ "homepage.table.status": "Statut",
44
+ "homepage.table.user": "Utilisateur",
45
+ "homepage.table.device": "Appareil",
46
+ "homepage.table.ipAddress": "Adresse IP",
47
+ "homepage.table.loginTime": "Heure de connexion",
48
+ "homepage.table.lastActive": "Dernière activité",
49
+ "homepage.table.actions": "Actions",
50
+ "homepage.status.active": "Actif",
51
+ "homepage.status.idle": "Inactif",
52
+ "homepage.status.loggedOut": "Déconnecté",
53
+ "homepage.status.terminated": "Terminé",
54
+ "homepage.user.unknown": "Inconnu",
55
+ "homepage.time.minAgo": "il y a {minutes} min",
56
+ "homepage.actions.viewDetails": "Voir les Détails",
57
+ "homepage.actions.terminate": "Terminer (Déconnexion)",
58
+ "homepage.actions.alreadyInactive": "Déjà inactif",
59
+ "homepage.actions.deletePermanently": "Supprimer Définitivement",
60
+ "homepage.empty.title": "Pas encore de sessions",
61
+ "homepage.empty.description": "Les sessions apparaîtront ici lorsque les utilisateurs se connecteront à votre application",
62
+ "homepage.noResults.title": "Aucune session trouvée",
63
+ "homepage.noResults.description": "Essayez d'ajuster votre requête de recherche ou vos filtres pour trouver des sessions",
64
+ "homepage.confirm.terminate": "Êtes-vous sûr de vouloir terminer cette session ?\n\nCela définira isActive sur false (l'utilisateur sera déconnecté).",
65
+ "homepage.confirm.delete": "[ATTENTION] Cela SUPPRIMERA DÉFINITIVEMENT cette session de la base de données !\n\nCette action ne peut pas être annulée.\n\nÊtes-vous sûr ?",
66
+
67
+ "modal.title": "Détails de la Session",
68
+ "modal.id": "ID: {id}",
69
+ "modal.status.online": "EN LIGNE",
70
+ "modal.status.offline": "HORS LIGNE",
71
+ "modal.section.user": "Utilisateur",
72
+ "modal.section.device": "Appareil",
73
+ "modal.section.timeline": "Chronologie",
74
+ "modal.section.security": "Localisation et Sécurité",
75
+ "modal.section.technical": "Détails Techniques",
76
+ "modal.user.username": "Nom d'utilisateur",
77
+ "modal.user.email": "E-mail",
78
+ "modal.user.id": "ID Utilisateur",
79
+ "modal.user.na": "N/D",
80
+ "modal.device.device": "Appareil",
81
+ "modal.device.browser": "Navigateur",
82
+ "modal.device.os": "Système d'exploitation",
83
+ "modal.device.ip": "IP",
84
+ "modal.timeline.login": "Connexion",
85
+ "modal.timeline.lastActive": "Dernière activité",
86
+ "modal.timeline.idleTime": "Temps d'inactivité",
87
+ "modal.timeline.logout": "Déconnexion",
88
+ "modal.timeline.minutes": "{minutes} min",
89
+ "modal.security.loading": "Chargement des données de localisation...",
90
+ "modal.security.country": "Pays",
91
+ "modal.security.city": "Ville",
92
+ "modal.security.timezone": "Fuseau horaire",
93
+ "modal.security.score": "Sécurité",
94
+ "modal.security.vpn": "VPN",
95
+ "modal.security.proxy": "Proxy",
96
+ "modal.security.vpnWarning": "[ATTENTION] Oui",
97
+ "modal.security.no": "Non",
98
+ "modal.premium.title": "Analyse de Localisation et Sécurité",
99
+ "modal.premium.description": "Débloquez les fonctionnalités premium pour obtenir la géolocalisation IP, le score de sécurité et la détection VPN/Proxy pour chaque session",
100
+ "modal.premium.upgrade": "Passer à Premium",
101
+ "modal.technical.show": "Afficher les Détails",
102
+ "modal.technical.hide": "Masquer les Détails",
103
+ "modal.actions.close": "Fermer",
104
+ "modal.actions.terminate": "Terminer la Session",
105
+ "modal.confirm.terminate": "Êtes-vous sûr de vouloir terminer cette session ?",
106
+
107
+ "panel.title": "Info Session",
108
+ "panel.loading": "Chargement...",
109
+ "panel.status.active": "ACTIF",
110
+ "panel.status.offline": "HORS LIGNE",
111
+ "panel.sessions.count": "{count} session(s) active(s)",
112
+ "panel.sessions.title": "Sessions Actives",
113
+ "panel.sessions.active": "Actif",
114
+ "panel.sessions.activeNow": "Actif maintenant",
115
+ "panel.sessions.activeAgo": "Actif il y a {minutes} min",
116
+ "panel.sessions.more": "+{count} session(s) supplémentaire(s)",
117
+ "panel.blocked.title": "Utilisateur bloqué",
118
+ "panel.blocked.description": "Authentification désactivée",
119
+ "panel.empty.title": "Aucune session active",
120
+ "panel.empty.description": "L'utilisateur ne s'est pas encore connecté",
121
+ "panel.actions.title": "Actions",
122
+ "panel.actions.terminateAll": "Terminer Toutes les Sessions",
123
+ "panel.actions.blockUser": "Bloquer l'Utilisateur",
124
+ "panel.actions.unblockUser": "Débloquer l'Utilisateur",
125
+
126
+ "settings.title": "Paramètres Session Manager",
127
+ "settings.subtitle": "Configurer le suivi des sessions, la sécurité et les notifications par e-mail",
128
+ "settings.save": "Enregistrer les Modifications",
129
+ "settings.saving": "Enregistrement...",
130
+ "settings.noChanges": "Aucune Modification",
131
+ "settings.reset": "Réinitialiser",
132
+ "settings.license.title": "Statut de Licence Actuel",
133
+ "settings.license.premium": "Premium",
134
+ "settings.license.advanced": "Advanced",
135
+ "settings.license.enterprise": "Enterprise",
136
+
137
+ "settings.general.title": "Paramètres Généraux",
138
+ "settings.general.description": "Configuration de base du suivi des sessions",
139
+ "settings.general.timeout.title": "DÉLAI D'EXPIRATION DE SESSION",
140
+ "settings.general.timeout.inactivity": "Délai d'Inactivité",
141
+ "settings.general.timeout.inactivityHint": "Les sessions inactives depuis plus de {minutes} minutes seront marquées comme hors ligne",
142
+ "settings.general.timeout.5min": "5 minutes (Très strict)",
143
+ "settings.general.timeout.10min": "10 minutes (Strict)",
144
+ "settings.general.timeout.15min": "15 minutes (Recommandé)",
145
+ "settings.general.timeout.30min": "30 minutes (Modéré)",
146
+ "settings.general.timeout.1hour": "1 heure (Souple)",
147
+ "settings.general.timeout.2hours": "2 heures (Très souple)",
148
+ "settings.general.rateLimit.title": "Limite de Taux de Dernière Vue",
149
+ "settings.general.rateLimit.hint": "Empêche les écritures excessives en base de données. Les mises à jour sont limitées à une fois toutes les {seconds} secondes",
150
+ "settings.general.rateLimit.10sec": "10 secondes",
151
+ "settings.general.rateLimit.30sec": "30 secondes (Recommandé)",
152
+ "settings.general.rateLimit.1min": "1 minute",
153
+ "settings.general.rateLimit.2min": "2 minutes",
154
+ "settings.general.rateLimit.5min": "5 minutes",
155
+ "settings.general.cleanup.title": "NETTOYAGE ET RÉTENTION AUTOMATIQUES",
156
+ "settings.general.cleanup.interval": "Intervalle de Nettoyage",
157
+ "settings.general.cleanup.intervalHint": "Les sessions inactives sont automatiquement nettoyées toutes les {minutes} minutes",
158
+ "settings.general.cleanup.15min": "15 minutes",
159
+ "settings.general.cleanup.30min": "30 minutes (Recommandé)",
160
+ "settings.general.cleanup.1hour": "1 heure",
161
+ "settings.general.cleanup.2hours": "2 heures",
162
+ "settings.general.retention.title": "Période de Rétention",
163
+ "settings.general.retention.hint": "Les anciennes sessions sont supprimées après {days}",
164
+ "settings.general.retention.hintNever": "Les anciennes sessions ne sont jamais supprimées",
165
+ "settings.general.retention.7days": "7 jours",
166
+ "settings.general.retention.30days": "30 jours",
167
+ "settings.general.retention.60days": "60 jours",
168
+ "settings.general.retention.90days": "90 jours (Recommandé)",
169
+ "settings.general.retention.180days": "180 jours",
170
+ "settings.general.retention.1year": "1 an",
171
+ "settings.general.retention.forever": "Pour toujours",
172
+ "settings.general.danger.title": "Zone de Danger",
173
+ "settings.general.danger.description": "Nettoyer Toutes les Inactives : Supprime définitivement toutes les sessions inactives. Cette action est irréversible.",
174
+ "settings.general.danger.cleanNow": "Nettoyer Maintenant",
175
+ "settings.general.danger.confirm": "[ATTENTION] Cela supprimera définitivement TOUTES les sessions inactives.\n\nContinuer ?",
176
+
177
+ "settings.security.title": "Paramètres de Sécurité",
178
+ "settings.security.description": "Politiques de sécurité et protection contre les menaces",
179
+ "settings.security.options": "OPTIONS DE SÉCURITÉ",
180
+ "settings.security.encryption.title": "Générateur de Clé de Chiffrement JWT",
181
+ "settings.security.encryption.description": "Générez une clé de chiffrement sécurisée de 32 caractères pour le stockage des tokens JWT. Cette clé est utilisée pour chiffrer les tokens avant de les enregistrer dans la base de données.",
182
+ "settings.security.encryption.important": "Important",
183
+ "settings.security.encryption.envHint": "Ajoutez cette clé à votre fichier .env comme SESSION_ENCRYPTION_KEY pour la production.",
184
+ "settings.security.encryption.label": "Clé de Chiffrement Générée",
185
+ "settings.security.encryption.placeholder": "Cliquez sur 'Générer une Clé' pour créer une clé sécurisée",
186
+ "settings.security.encryption.show": "Afficher",
187
+ "settings.security.encryption.hide": "Masquer",
188
+ "settings.security.encryption.generate": "Générer une Clé",
189
+ "settings.security.encryption.copy": "Copier dans le Presse-papiers",
190
+ "settings.security.encryption.copyEnv": "Copier pour .env",
191
+ "settings.security.encryption.envLabel": "Ajouter au fichier .env :",
192
+ "settings.security.blockSuspicious.title": "Bloquer les Sessions Suspectes",
193
+ "settings.security.blockSuspicious.description": "Bloquer automatiquement les sessions provenant de VPNs, proxys ou IPs de menaces",
194
+ "settings.security.geolocation.title": "Géolocalisation IP",
195
+ "settings.security.geolocation.description": "Récupérer les données de localisation pour chaque session (Premium)",
196
+ "settings.security.scoring.title": "Score de Sécurité",
197
+ "settings.security.scoring.description": "Calculer les scores de sécurité et détecter les menaces (Premium)",
198
+ "settings.security.maxFailed.title": "Max. Tentatives de Connexion Échouées",
199
+ "settings.security.maxFailed.hint": "L'utilisateur sera bloqué après {count} tentatives échouées",
200
+
201
+ "settings.email.title": "Notifications par E-mail (Advanced)",
202
+ "settings.email.description": "Alertes par e-mail pour les événements de sécurité",
203
+ "settings.email.alerts.title": "ALERTES PAR E-MAIL",
204
+ "settings.email.alerts.subtitle": "Envoyer des alertes de sécurité aux utilisateurs par e-mail",
205
+ "settings.email.enable.title": "Activer les Alertes par E-mail",
206
+ "settings.email.enable.description": "Envoyer des alertes de sécurité pour les connexions suspectes, les nouvelles localisations et l'utilisation de VPN/Proxy",
207
+ "settings.email.types.title": "TYPES D'ALERTES",
208
+ "settings.email.types.suspicious": "Connexion Suspecte",
209
+ "settings.email.types.newLocation": "Nouvelle Localisation",
210
+ "settings.email.types.vpnProxy": "VPN/Proxy",
211
+ "settings.email.templates.title": "MODÈLES D'E-MAIL",
212
+ "settings.email.templates.subtitle": "Personnaliser les modèles de notification avec des variables dynamiques",
213
+ "settings.email.templates.subject": "Sujet de l'E-mail",
214
+ "settings.email.templates.subjectPlaceholder": "Entrez le sujet de l'e-mail...",
215
+ "settings.email.templates.variables": "Variables Disponibles (cliquez pour copier)",
216
+ "settings.email.templates.html.title": "Modèle HTML",
217
+ "settings.email.templates.html.badge": "Modèle Principal",
218
+ "settings.email.templates.html.description": "Modèle HTML pour les notifications. Utilisez des variables comme {{user.email}} pour le contenu dynamique.",
219
+ "settings.email.templates.html.loadDefault": "Charger le Défaut",
220
+ "settings.email.templates.html.copy": "Copier le Modèle",
221
+ "settings.email.templates.html.validate": "Valider",
222
+ "settings.email.templates.html.info": "Info du Modèle",
223
+ "settings.email.templates.text.title": "Modèle Texte",
224
+ "settings.email.templates.text.badge": "Alternative",
225
+ "settings.email.templates.text.description": "Version texte brut (sans HTML) comme alternative pour les anciens clients de messagerie",
226
+ "settings.email.templates.text.loadDefault": "Charger le Défaut",
227
+ "settings.email.templates.text.copy": "Copier le Modèle",
228
+ "settings.email.templates.tab.suspicious": "Connexion Suspecte",
229
+ "settings.email.templates.tab.newLocation": "Nouvelle Localisation",
230
+ "settings.email.templates.tab.vpnProxy": "VPN/Proxy",
231
+
232
+ "settings.webhooks.title": "Intégration Webhooks (Advanced)",
233
+ "settings.webhooks.description": "Intégration Discord et Slack",
234
+ "settings.webhooks.enable.title": "Activer les Webhooks",
235
+ "settings.webhooks.enable.description": "Envoyer les événements de session vers Discord, Slack ou des endpoints personnalisés",
236
+ "settings.webhooks.discord.title": "URL Webhook Discord",
237
+ "settings.webhooks.discord.placeholder": "https://discord.com/api/webhooks/123456789/abcdefghijklmnopqrstuvwxyz...",
238
+ "settings.webhooks.discord.hint": "Optionnel : Publier les alertes de session sur votre canal Discord",
239
+ "settings.webhooks.slack.title": "URL Webhook Slack",
240
+ "settings.webhooks.slack.placeholder": "https://hooks.slack.com/services/XXXX/XXXX/XXXX",
241
+ "settings.webhooks.slack.hint": "Optionnel : Publier les alertes de session sur votre espace Slack",
242
+ "settings.webhooks.characters": "{count} caractères",
243
+
244
+ "settings.footer.title": "Paramètres Sauvegardés en Base de Données",
245
+ "settings.footer.description": "Tous les paramètres sont stockés dans votre base de données Strapi et partagés entre tous les utilisateurs administrateurs. Les modifications prennent effet immédiatement - pas de redémarrage du serveur nécessaire ! Les modèles d'e-mail, les webhooks et les options de sécurité sont tous gérés depuis cette interface.",
246
+
247
+ "common.loading": "Chargement...",
248
+ "common.save": "Enregistrer",
249
+ "common.cancel": "Annuler",
250
+ "common.close": "Fermer",
251
+ "common.delete": "Supprimer",
252
+ "common.confirm": "Confirmer",
253
+ "common.yes": "Oui",
254
+ "common.no": "Non",
255
+ "common.on": "le",
256
+ "common.active": "ACTIF",
257
+ "common.inactive": "INACTIF",
258
+
259
+ "notifications.success.saved": "Paramètres enregistrés avec succès dans la base de données !",
260
+ "notifications.success.deleted": "Session supprimée définitivement",
261
+ "notifications.success.terminated": "Session terminée avec succès",
262
+ "notifications.success.terminatedAll": "Toutes les sessions terminées avec succès",
263
+ "notifications.success.blocked": "Utilisateur bloqué avec succès",
264
+ "notifications.success.unblocked": "Utilisateur débloqué avec succès",
265
+ "notifications.success.exported": "{count} sessions exportées en {format}",
266
+ "notifications.success.cleaned": "{count} sessions inactives supprimées avec succès !",
267
+ "notifications.success.keyCopied": "Clé de chiffrement copiée dans le presse-papiers !",
268
+ "notifications.success.keyGenerated": "Clé de chiffrement de 32 caractères générée !",
269
+ "notifications.success.envCopied": "Copié au format .env !",
270
+ "notifications.success.templateCopied": "Modèle copié !",
271
+ "notifications.success.htmlCopied": "Modèle HTML copié !",
272
+ "notifications.success.textCopied": "Modèle texte copié !",
273
+ "notifications.success.defaultLoaded": "Modèle par défaut chargé !",
274
+ "notifications.success.variableCopied": "{variable} copié !",
275
+ "notifications.success.validated": "Modèle valide ! {found}/{total} variables trouvées.",
276
+ "notifications.warning.premiumRequired": "Licence Premium requise pour la fonction d'exportation",
277
+ "notifications.warning.noVariables": "[ATTENTION] Aucune variable trouvée. Ajoutez au moins une variable.",
278
+ "notifications.warning.settingsLoad": "Impossible de charger les paramètres depuis le serveur. Utilisation des valeurs par défaut.",
279
+ "notifications.error.terminate": "Échec de la terminaison de la session",
280
+ "notifications.error.terminateAll": "Échec de la terminaison des sessions",
281
+ "notifications.error.delete": "Échec de la suppression de la session",
282
+ "notifications.error.block": "Échec de la mise à jour du statut de l'utilisateur",
283
+ "notifications.error.save": "Échec de l'enregistrement des paramètres sur le serveur",
284
+ "notifications.error.clean": "Échec de la suppression des sessions inactives",
285
+ "notifications.error.export": "Échec de l'exportation des sessions",
286
+ "notifications.info.templateStats": "Le modèle contient {lines} lignes et {chars} caractères"
20
287
  }
21
-