strapi-plugin-magic-sessionmanager 4.0.0 → 4.0.2

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 (68) hide show
  1. package/README.md +2 -2
  2. package/admin/src/components/LicenseGuard.jsx +6 -6
  3. package/admin/src/components/OnlineUsersWidget.jsx +11 -7
  4. package/admin/src/components/SessionDetailModal.jsx +45 -41
  5. package/admin/src/components/SessionInfoCard.jsx +3 -3
  6. package/admin/src/components/SessionInfoPanel.jsx +31 -21
  7. package/admin/src/index.js +9 -0
  8. package/admin/src/pages/Analytics.jsx +2 -2
  9. package/admin/src/pages/HomePage.jsx +129 -165
  10. package/admin/src/pages/License.jsx +5 -5
  11. package/admin/src/pages/Settings.jsx +148 -144
  12. package/admin/src/pages/SettingsNew.jsx +21 -21
  13. package/admin/src/pages/UpgradePage.jsx +448 -0
  14. package/admin/src/pluginId.js +1 -0
  15. package/admin/src/translations/de.json +294 -15
  16. package/admin/src/translations/en.json +293 -14
  17. package/admin/src/translations/es.json +284 -18
  18. package/admin/src/translations/fr.json +284 -18
  19. package/admin/src/translations/pt.json +284 -18
  20. package/admin/src/utils/parseUserAgent.js +6 -6
  21. package/admin/src/utils/theme.js +85 -0
  22. package/dist/_chunks/{Analytics-mYu_uGwU.mjs → Analytics-DTE_zmRV.mjs} +4 -4
  23. package/dist/_chunks/{Analytics-ioaeEh-E.js → Analytics-lw_JaOVy.js} +4 -4
  24. package/dist/_chunks/{App-DdnUYWbC.js → App-DDKYCjKw.js} +221 -216
  25. package/dist/_chunks/{App-BXpIS12l.mjs → App-DJW1ZNl5.mjs} +221 -216
  26. package/dist/_chunks/{License-C03C2j9P.mjs → License-DaOFuImm.mjs} +6 -10
  27. package/dist/_chunks/{License-DZYrOgcx.js → License-Tk-6UfPl.js} +6 -10
  28. package/dist/_chunks/{OnlineUsersWidget-B8JS1xZu.js → OnlineUsersWidget-C1qTpsws.js} +11 -7
  29. package/dist/_chunks/{OnlineUsersWidget-ArMl0nen.mjs → OnlineUsersWidget-CADphbXG.mjs} +11 -7
  30. package/dist/_chunks/{Settings-0ocB3qHk.mjs → Settings-C9xvckgq.mjs} +200 -188
  31. package/dist/_chunks/{Settings-C6_CqpCC.js → Settings-DyEAuTNQ.js} +200 -188
  32. package/dist/_chunks/UpgradePage-Dssk8A0Z.js +354 -0
  33. package/dist/_chunks/UpgradePage-cINvE9zY.mjs +352 -0
  34. package/dist/_chunks/de-CDA1V0rF.mjs +292 -0
  35. package/dist/_chunks/de-I-Q-pWqu.js +292 -0
  36. package/dist/_chunks/en-Bd7_h-4e.js +292 -0
  37. package/dist/_chunks/en-DzmOCyzQ.mjs +292 -0
  38. package/dist/_chunks/es-BcAx18XG.js +277 -0
  39. package/dist/_chunks/es-Cx-SN6qV.mjs +277 -0
  40. package/dist/_chunks/fr-DCzYMuJ-.js +277 -0
  41. package/dist/_chunks/fr-DXlXE5Eo.mjs +277 -0
  42. package/dist/_chunks/{index-DC8Y0qxx.js → index-CWcvrfXc.js} +52 -49
  43. package/dist/_chunks/{index-DBRS3kt5.mjs → index-DQO9bNP7.mjs} +52 -49
  44. package/dist/_chunks/pt-21-MAb72.js +277 -0
  45. package/dist/_chunks/pt-zsdTSjba.mjs +277 -0
  46. package/dist/_chunks/{useLicense-qgGfMvse.js → useLicense-DtvJOszr.js} +1 -1
  47. package/dist/_chunks/{useLicense-DSLL9n3Y.mjs → useLicense-DxbD4Wf8.mjs} +1 -1
  48. package/dist/admin/index.js +1 -1
  49. package/dist/admin/index.mjs +1 -1
  50. package/dist/server/index.js +142 -33
  51. package/dist/server/index.mjs +142 -33
  52. package/package.json +1 -1
  53. package/server/src/bootstrap.js +76 -4
  54. package/server/src/controllers/session.js +59 -9
  55. package/server/src/middlewares/last-seen.js +5 -4
  56. package/server/src/routes/content-api.js +11 -2
  57. package/server/src/services/notifications.js +10 -10
  58. package/server/src/services/session.js +24 -4
  59. package/dist/_chunks/de-BxFx1pwE.js +0 -23
  60. package/dist/_chunks/de-CdO3s01z.mjs +0 -23
  61. package/dist/_chunks/en-CsPpPJL3.mjs +0 -23
  62. package/dist/_chunks/en-RqmpDHdS.js +0 -23
  63. package/dist/_chunks/es-CuLHazN1.js +0 -23
  64. package/dist/_chunks/es-Dkmjhy9c.mjs +0 -23
  65. package/dist/_chunks/fr-BAJp2yhI.js +0 -23
  66. package/dist/_chunks/fr-Bssg_3UF.mjs +0 -23
  67. package/dist/_chunks/pt-BAP9cKs3.js +0 -23
  68. package/dist/_chunks/pt-BVNoNcuY.mjs +0 -23
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const fr = {
4
+ "plugin.name": "Session Manager",
5
+ "plugin.description": "Suivre les connexions/déconnexions et l'activité des sessions",
6
+ "settings.section": "Session Manager",
7
+ "settings.sessions": "Sessions Actives",
8
+ "settings.upgrade": "Mise à niveau",
9
+ "settings.general": "Général",
10
+ "settings.analytics": "Analyses",
11
+ "settings.license": "Licence",
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
+ "homepage.title": "Session Manager",
20
+ "homepage.subtitle": "Surveiller et gérer les sessions utilisateur en temps réel",
21
+ "homepage.stats.active": "Actif",
22
+ "homepage.stats.idle": "Inactif",
23
+ "homepage.stats.loggedOut": "Déconnecté",
24
+ "homepage.stats.terminated": "Terminé",
25
+ "homepage.stats.total": "Total",
26
+ "homepage.export.csv": "Exporter CSV",
27
+ "homepage.export.json": "Exporter JSON",
28
+ "homepage.loading": "Chargement des sessions...",
29
+ "homepage.allSessions": "Toutes les Sessions",
30
+ "homepage.search.placeholder": "Rechercher par utilisateur, adresse IP ou appareil...",
31
+ "homepage.filter.all": "Toutes les Sessions",
32
+ "homepage.filter.active": "Actives (moins de 15 min)",
33
+ "homepage.filter.idle": "Inactives (plus de 15 min)",
34
+ "homepage.filter.loggedout": "Déconnectées",
35
+ "homepage.filter.terminated": "Terminées",
36
+ "homepage.entries.10": "10 entrées",
37
+ "homepage.entries.25": "25 entrées",
38
+ "homepage.entries.50": "50 entrées",
39
+ "homepage.entries.100": "100 entrées",
40
+ "homepage.showing": "Affichage de {count} sur {total} sessions",
41
+ "homepage.showingFiltered": 'Affichage de {count} sur {total} sessions (filtré par "{query}")',
42
+ "homepage.table.status": "Statut",
43
+ "homepage.table.user": "Utilisateur",
44
+ "homepage.table.device": "Appareil",
45
+ "homepage.table.ipAddress": "Adresse IP",
46
+ "homepage.table.loginTime": "Heure de connexion",
47
+ "homepage.table.lastActive": "Dernière activité",
48
+ "homepage.table.actions": "Actions",
49
+ "homepage.status.active": "Actif",
50
+ "homepage.status.idle": "Inactif",
51
+ "homepage.status.loggedOut": "Déconnecté",
52
+ "homepage.status.terminated": "Terminé",
53
+ "homepage.user.unknown": "Inconnu",
54
+ "homepage.time.minAgo": "il y a {minutes} min",
55
+ "homepage.actions.viewDetails": "Voir les Détails",
56
+ "homepage.actions.terminate": "Terminer (Déconnexion)",
57
+ "homepage.actions.alreadyInactive": "Déjà inactif",
58
+ "homepage.actions.deletePermanently": "Supprimer Définitivement",
59
+ "homepage.empty.title": "Pas encore de sessions",
60
+ "homepage.empty.description": "Les sessions apparaîtront ici lorsque les utilisateurs se connecteront à votre application",
61
+ "homepage.noResults.title": "Aucune session trouvée",
62
+ "homepage.noResults.description": "Essayez d'ajuster votre requête de recherche ou vos filtres pour trouver des sessions",
63
+ "homepage.confirm.terminate": "Êtes-vous sûr de vouloir terminer cette session ?\n\nCela définira isActive sur false (l'utilisateur sera déconnecté).",
64
+ "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 ?",
65
+ "modal.title": "Détails de la Session",
66
+ "modal.id": "ID: {id}",
67
+ "modal.status.online": "EN LIGNE",
68
+ "modal.status.offline": "HORS LIGNE",
69
+ "modal.section.user": "Utilisateur",
70
+ "modal.section.device": "Appareil",
71
+ "modal.section.timeline": "Chronologie",
72
+ "modal.section.security": "Localisation et Sécurité",
73
+ "modal.section.technical": "Détails Techniques",
74
+ "modal.user.username": "Nom d'utilisateur",
75
+ "modal.user.email": "E-mail",
76
+ "modal.user.id": "ID Utilisateur",
77
+ "modal.user.na": "N/D",
78
+ "modal.device.device": "Appareil",
79
+ "modal.device.browser": "Navigateur",
80
+ "modal.device.os": "Système d'exploitation",
81
+ "modal.device.ip": "IP",
82
+ "modal.timeline.login": "Connexion",
83
+ "modal.timeline.lastActive": "Dernière activité",
84
+ "modal.timeline.idleTime": "Temps d'inactivité",
85
+ "modal.timeline.logout": "Déconnexion",
86
+ "modal.timeline.minutes": "{minutes} min",
87
+ "modal.security.loading": "Chargement des données de localisation...",
88
+ "modal.security.country": "Pays",
89
+ "modal.security.city": "Ville",
90
+ "modal.security.timezone": "Fuseau horaire",
91
+ "modal.security.score": "Sécurité",
92
+ "modal.security.vpn": "VPN",
93
+ "modal.security.proxy": "Proxy",
94
+ "modal.security.vpnWarning": "[ATTENTION] Oui",
95
+ "modal.security.no": "Non",
96
+ "modal.premium.title": "Analyse de Localisation et Sécurité",
97
+ "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",
98
+ "modal.premium.upgrade": "Passer à Premium",
99
+ "modal.technical.show": "Afficher les Détails",
100
+ "modal.technical.hide": "Masquer les Détails",
101
+ "modal.actions.close": "Fermer",
102
+ "modal.actions.terminate": "Terminer la Session",
103
+ "modal.confirm.terminate": "Êtes-vous sûr de vouloir terminer cette session ?",
104
+ "panel.title": "Info Session",
105
+ "panel.loading": "Chargement...",
106
+ "panel.status.active": "ACTIF",
107
+ "panel.status.offline": "HORS LIGNE",
108
+ "panel.sessions.count": "{count} session(s) active(s)",
109
+ "panel.sessions.title": "Sessions Actives",
110
+ "panel.sessions.active": "Actif",
111
+ "panel.sessions.activeNow": "Actif maintenant",
112
+ "panel.sessions.activeAgo": "Actif il y a {minutes} min",
113
+ "panel.sessions.more": "+{count} session(s) supplémentaire(s)",
114
+ "panel.blocked.title": "Utilisateur bloqué",
115
+ "panel.blocked.description": "Authentification désactivée",
116
+ "panel.empty.title": "Aucune session active",
117
+ "panel.empty.description": "L'utilisateur ne s'est pas encore connecté",
118
+ "panel.actions.title": "Actions",
119
+ "panel.actions.terminateAll": "Terminer Toutes les Sessions",
120
+ "panel.actions.blockUser": "Bloquer l'Utilisateur",
121
+ "panel.actions.unblockUser": "Débloquer l'Utilisateur",
122
+ "settings.title": "Paramètres Session Manager",
123
+ "settings.subtitle": "Configurer le suivi des sessions, la sécurité et les notifications par e-mail",
124
+ "settings.save": "Enregistrer les Modifications",
125
+ "settings.saving": "Enregistrement...",
126
+ "settings.noChanges": "Aucune Modification",
127
+ "settings.reset": "Réinitialiser",
128
+ "settings.license.title": "Statut de Licence Actuel",
129
+ "settings.license.premium": "Premium",
130
+ "settings.license.advanced": "Advanced",
131
+ "settings.license.enterprise": "Enterprise",
132
+ "settings.general.title": "Paramètres Généraux",
133
+ "settings.general.description": "Configuration de base du suivi des sessions",
134
+ "settings.general.timeout.title": "DÉLAI D'EXPIRATION DE SESSION",
135
+ "settings.general.timeout.inactivity": "Délai d'Inactivité",
136
+ "settings.general.timeout.inactivityHint": "Les sessions inactives depuis plus de {minutes} minutes seront marquées comme hors ligne",
137
+ "settings.general.timeout.5min": "5 minutes (Très strict)",
138
+ "settings.general.timeout.10min": "10 minutes (Strict)",
139
+ "settings.general.timeout.15min": "15 minutes (Recommandé)",
140
+ "settings.general.timeout.30min": "30 minutes (Modéré)",
141
+ "settings.general.timeout.1hour": "1 heure (Souple)",
142
+ "settings.general.timeout.2hours": "2 heures (Très souple)",
143
+ "settings.general.rateLimit.title": "Limite de Taux de Dernière Vue",
144
+ "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",
145
+ "settings.general.rateLimit.10sec": "10 secondes",
146
+ "settings.general.rateLimit.30sec": "30 secondes (Recommandé)",
147
+ "settings.general.rateLimit.1min": "1 minute",
148
+ "settings.general.rateLimit.2min": "2 minutes",
149
+ "settings.general.rateLimit.5min": "5 minutes",
150
+ "settings.general.cleanup.title": "NETTOYAGE ET RÉTENTION AUTOMATIQUES",
151
+ "settings.general.cleanup.interval": "Intervalle de Nettoyage",
152
+ "settings.general.cleanup.intervalHint": "Les sessions inactives sont automatiquement nettoyées toutes les {minutes} minutes",
153
+ "settings.general.cleanup.15min": "15 minutes",
154
+ "settings.general.cleanup.30min": "30 minutes (Recommandé)",
155
+ "settings.general.cleanup.1hour": "1 heure",
156
+ "settings.general.cleanup.2hours": "2 heures",
157
+ "settings.general.retention.title": "Période de Rétention",
158
+ "settings.general.retention.hint": "Les anciennes sessions sont supprimées après {days}",
159
+ "settings.general.retention.hintNever": "Les anciennes sessions ne sont jamais supprimées",
160
+ "settings.general.retention.7days": "7 jours",
161
+ "settings.general.retention.30days": "30 jours",
162
+ "settings.general.retention.60days": "60 jours",
163
+ "settings.general.retention.90days": "90 jours (Recommandé)",
164
+ "settings.general.retention.180days": "180 jours",
165
+ "settings.general.retention.1year": "1 an",
166
+ "settings.general.retention.forever": "Pour toujours",
167
+ "settings.general.danger.title": "Zone de Danger",
168
+ "settings.general.danger.description": "Nettoyer Toutes les Inactives : Supprime définitivement toutes les sessions inactives. Cette action est irréversible.",
169
+ "settings.general.danger.cleanNow": "Nettoyer Maintenant",
170
+ "settings.general.danger.confirm": "[ATTENTION] Cela supprimera définitivement TOUTES les sessions inactives.\n\nContinuer ?",
171
+ "settings.security.title": "Paramètres de Sécurité",
172
+ "settings.security.description": "Politiques de sécurité et protection contre les menaces",
173
+ "settings.security.options": "OPTIONS DE SÉCURITÉ",
174
+ "settings.security.encryption.title": "Générateur de Clé de Chiffrement JWT",
175
+ "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.",
176
+ "settings.security.encryption.important": "Important",
177
+ "settings.security.encryption.envHint": "Ajoutez cette clé à votre fichier .env comme SESSION_ENCRYPTION_KEY pour la production.",
178
+ "settings.security.encryption.label": "Clé de Chiffrement Générée",
179
+ "settings.security.encryption.placeholder": "Cliquez sur 'Générer une Clé' pour créer une clé sécurisée",
180
+ "settings.security.encryption.show": "Afficher",
181
+ "settings.security.encryption.hide": "Masquer",
182
+ "settings.security.encryption.generate": "Générer une Clé",
183
+ "settings.security.encryption.copy": "Copier dans le Presse-papiers",
184
+ "settings.security.encryption.copyEnv": "Copier pour .env",
185
+ "settings.security.encryption.envLabel": "Ajouter au fichier .env :",
186
+ "settings.security.blockSuspicious.title": "Bloquer les Sessions Suspectes",
187
+ "settings.security.blockSuspicious.description": "Bloquer automatiquement les sessions provenant de VPNs, proxys ou IPs de menaces",
188
+ "settings.security.geolocation.title": "Géolocalisation IP",
189
+ "settings.security.geolocation.description": "Récupérer les données de localisation pour chaque session (Premium)",
190
+ "settings.security.scoring.title": "Score de Sécurité",
191
+ "settings.security.scoring.description": "Calculer les scores de sécurité et détecter les menaces (Premium)",
192
+ "settings.security.maxFailed.title": "Max. Tentatives de Connexion Échouées",
193
+ "settings.security.maxFailed.hint": "L'utilisateur sera bloqué après {count} tentatives échouées",
194
+ "settings.email.title": "Notifications par E-mail (Advanced)",
195
+ "settings.email.description": "Alertes par e-mail pour les événements de sécurité",
196
+ "settings.email.alerts.title": "ALERTES PAR E-MAIL",
197
+ "settings.email.alerts.subtitle": "Envoyer des alertes de sécurité aux utilisateurs par e-mail",
198
+ "settings.email.enable.title": "Activer les Alertes par E-mail",
199
+ "settings.email.enable.description": "Envoyer des alertes de sécurité pour les connexions suspectes, les nouvelles localisations et l'utilisation de VPN/Proxy",
200
+ "settings.email.types.title": "TYPES D'ALERTES",
201
+ "settings.email.types.suspicious": "Connexion Suspecte",
202
+ "settings.email.types.newLocation": "Nouvelle Localisation",
203
+ "settings.email.types.vpnProxy": "VPN/Proxy",
204
+ "settings.email.templates.title": "MODÈLES D'E-MAIL",
205
+ "settings.email.templates.subtitle": "Personnaliser les modèles de notification avec des variables dynamiques",
206
+ "settings.email.templates.subject": "Sujet de l'E-mail",
207
+ "settings.email.templates.subjectPlaceholder": "Entrez le sujet de l'e-mail...",
208
+ "settings.email.templates.variables": "Variables Disponibles (cliquez pour copier)",
209
+ "settings.email.templates.html.title": "Modèle HTML",
210
+ "settings.email.templates.html.badge": "Modèle Principal",
211
+ "settings.email.templates.html.description": "Modèle HTML pour les notifications. Utilisez des variables comme {{user.email}} pour le contenu dynamique.",
212
+ "settings.email.templates.html.loadDefault": "Charger le Défaut",
213
+ "settings.email.templates.html.copy": "Copier le Modèle",
214
+ "settings.email.templates.html.validate": "Valider",
215
+ "settings.email.templates.html.info": "Info du Modèle",
216
+ "settings.email.templates.text.title": "Modèle Texte",
217
+ "settings.email.templates.text.badge": "Alternative",
218
+ "settings.email.templates.text.description": "Version texte brut (sans HTML) comme alternative pour les anciens clients de messagerie",
219
+ "settings.email.templates.text.loadDefault": "Charger le Défaut",
220
+ "settings.email.templates.text.copy": "Copier le Modèle",
221
+ "settings.email.templates.tab.suspicious": "Connexion Suspecte",
222
+ "settings.email.templates.tab.newLocation": "Nouvelle Localisation",
223
+ "settings.email.templates.tab.vpnProxy": "VPN/Proxy",
224
+ "settings.webhooks.title": "Intégration Webhooks (Advanced)",
225
+ "settings.webhooks.description": "Intégration Discord et Slack",
226
+ "settings.webhooks.enable.title": "Activer les Webhooks",
227
+ "settings.webhooks.enable.description": "Envoyer les événements de session vers Discord, Slack ou des endpoints personnalisés",
228
+ "settings.webhooks.discord.title": "URL Webhook Discord",
229
+ "settings.webhooks.discord.placeholder": "https://discord.com/api/webhooks/123456789/abcdefghijklmnopqrstuvwxyz...",
230
+ "settings.webhooks.discord.hint": "Optionnel : Publier les alertes de session sur votre canal Discord",
231
+ "settings.webhooks.slack.title": "URL Webhook Slack",
232
+ "settings.webhooks.slack.placeholder": "https://hooks.slack.com/services/XXXX/XXXX/XXXX",
233
+ "settings.webhooks.slack.hint": "Optionnel : Publier les alertes de session sur votre espace Slack",
234
+ "settings.webhooks.characters": "{count} caractères",
235
+ "settings.footer.title": "Paramètres Sauvegardés en Base de Données",
236
+ "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.",
237
+ "common.loading": "Chargement...",
238
+ "common.save": "Enregistrer",
239
+ "common.cancel": "Annuler",
240
+ "common.close": "Fermer",
241
+ "common.delete": "Supprimer",
242
+ "common.confirm": "Confirmer",
243
+ "common.yes": "Oui",
244
+ "common.no": "Non",
245
+ "common.on": "le",
246
+ "common.active": "ACTIF",
247
+ "common.inactive": "INACTIF",
248
+ "notifications.success.saved": "Paramètres enregistrés avec succès dans la base de données !",
249
+ "notifications.success.deleted": "Session supprimée définitivement",
250
+ "notifications.success.terminated": "Session terminée avec succès",
251
+ "notifications.success.terminatedAll": "Toutes les sessions terminées avec succès",
252
+ "notifications.success.blocked": "Utilisateur bloqué avec succès",
253
+ "notifications.success.unblocked": "Utilisateur débloqué avec succès",
254
+ "notifications.success.exported": "{count} sessions exportées en {format}",
255
+ "notifications.success.cleaned": "{count} sessions inactives supprimées avec succès !",
256
+ "notifications.success.keyCopied": "Clé de chiffrement copiée dans le presse-papiers !",
257
+ "notifications.success.keyGenerated": "Clé de chiffrement de 32 caractères générée !",
258
+ "notifications.success.envCopied": "Copié au format .env !",
259
+ "notifications.success.templateCopied": "Modèle copié !",
260
+ "notifications.success.htmlCopied": "Modèle HTML copié !",
261
+ "notifications.success.textCopied": "Modèle texte copié !",
262
+ "notifications.success.defaultLoaded": "Modèle par défaut chargé !",
263
+ "notifications.success.variableCopied": "{variable} copié !",
264
+ "notifications.success.validated": "Modèle valide ! {found}/{total} variables trouvées.",
265
+ "notifications.warning.premiumRequired": "Licence Premium requise pour la fonction d'exportation",
266
+ "notifications.warning.noVariables": "[ATTENTION] Aucune variable trouvée. Ajoutez au moins une variable.",
267
+ "notifications.warning.settingsLoad": "Impossible de charger les paramètres depuis le serveur. Utilisation des valeurs par défaut.",
268
+ "notifications.error.terminate": "Échec de la terminaison de la session",
269
+ "notifications.error.terminateAll": "Échec de la terminaison des sessions",
270
+ "notifications.error.delete": "Échec de la suppression de la session",
271
+ "notifications.error.block": "Échec de la mise à jour du statut de l'utilisateur",
272
+ "notifications.error.save": "Échec de l'enregistrement des paramètres sur le serveur",
273
+ "notifications.error.clean": "Échec de la suppression des sessions inactives",
274
+ "notifications.error.export": "Échec de l'exportation des sessions",
275
+ "notifications.info.templateStats": "Le modèle contient {lines} lignes et {chars} caractères"
276
+ };
277
+ exports.default = fr;
@@ -0,0 +1,277 @@
1
+ const fr = {
2
+ "plugin.name": "Session Manager",
3
+ "plugin.description": "Suivre les connexions/déconnexions et l'activité des sessions",
4
+ "settings.section": "Session Manager",
5
+ "settings.sessions": "Sessions Actives",
6
+ "settings.upgrade": "Mise à niveau",
7
+ "settings.general": "Général",
8
+ "settings.analytics": "Analyses",
9
+ "settings.license": "Licence",
10
+ "widget.online-users.title": "Utilisateurs en Ligne",
11
+ "widget.stats.onlineNow": "En ligne maintenant",
12
+ "widget.stats.offline": "Hors ligne",
13
+ "widget.stats.last15min": "15 dernières min",
14
+ "widget.stats.last30min": "30 dernières min",
15
+ "widget.stats.totalUsers": "Utilisateurs totaux",
16
+ "widget.stats.blocked": "Bloqués",
17
+ "homepage.title": "Session Manager",
18
+ "homepage.subtitle": "Surveiller et gérer les sessions utilisateur en temps réel",
19
+ "homepage.stats.active": "Actif",
20
+ "homepage.stats.idle": "Inactif",
21
+ "homepage.stats.loggedOut": "Déconnecté",
22
+ "homepage.stats.terminated": "Terminé",
23
+ "homepage.stats.total": "Total",
24
+ "homepage.export.csv": "Exporter CSV",
25
+ "homepage.export.json": "Exporter JSON",
26
+ "homepage.loading": "Chargement des sessions...",
27
+ "homepage.allSessions": "Toutes les Sessions",
28
+ "homepage.search.placeholder": "Rechercher par utilisateur, adresse IP ou appareil...",
29
+ "homepage.filter.all": "Toutes les Sessions",
30
+ "homepage.filter.active": "Actives (moins de 15 min)",
31
+ "homepage.filter.idle": "Inactives (plus de 15 min)",
32
+ "homepage.filter.loggedout": "Déconnectées",
33
+ "homepage.filter.terminated": "Terminées",
34
+ "homepage.entries.10": "10 entrées",
35
+ "homepage.entries.25": "25 entrées",
36
+ "homepage.entries.50": "50 entrées",
37
+ "homepage.entries.100": "100 entrées",
38
+ "homepage.showing": "Affichage de {count} sur {total} sessions",
39
+ "homepage.showingFiltered": 'Affichage de {count} sur {total} sessions (filtré par "{query}")',
40
+ "homepage.table.status": "Statut",
41
+ "homepage.table.user": "Utilisateur",
42
+ "homepage.table.device": "Appareil",
43
+ "homepage.table.ipAddress": "Adresse IP",
44
+ "homepage.table.loginTime": "Heure de connexion",
45
+ "homepage.table.lastActive": "Dernière activité",
46
+ "homepage.table.actions": "Actions",
47
+ "homepage.status.active": "Actif",
48
+ "homepage.status.idle": "Inactif",
49
+ "homepage.status.loggedOut": "Déconnecté",
50
+ "homepage.status.terminated": "Terminé",
51
+ "homepage.user.unknown": "Inconnu",
52
+ "homepage.time.minAgo": "il y a {minutes} min",
53
+ "homepage.actions.viewDetails": "Voir les Détails",
54
+ "homepage.actions.terminate": "Terminer (Déconnexion)",
55
+ "homepage.actions.alreadyInactive": "Déjà inactif",
56
+ "homepage.actions.deletePermanently": "Supprimer Définitivement",
57
+ "homepage.empty.title": "Pas encore de sessions",
58
+ "homepage.empty.description": "Les sessions apparaîtront ici lorsque les utilisateurs se connecteront à votre application",
59
+ "homepage.noResults.title": "Aucune session trouvée",
60
+ "homepage.noResults.description": "Essayez d'ajuster votre requête de recherche ou vos filtres pour trouver des sessions",
61
+ "homepage.confirm.terminate": "Êtes-vous sûr de vouloir terminer cette session ?\n\nCela définira isActive sur false (l'utilisateur sera déconnecté).",
62
+ "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 ?",
63
+ "modal.title": "Détails de la Session",
64
+ "modal.id": "ID: {id}",
65
+ "modal.status.online": "EN LIGNE",
66
+ "modal.status.offline": "HORS LIGNE",
67
+ "modal.section.user": "Utilisateur",
68
+ "modal.section.device": "Appareil",
69
+ "modal.section.timeline": "Chronologie",
70
+ "modal.section.security": "Localisation et Sécurité",
71
+ "modal.section.technical": "Détails Techniques",
72
+ "modal.user.username": "Nom d'utilisateur",
73
+ "modal.user.email": "E-mail",
74
+ "modal.user.id": "ID Utilisateur",
75
+ "modal.user.na": "N/D",
76
+ "modal.device.device": "Appareil",
77
+ "modal.device.browser": "Navigateur",
78
+ "modal.device.os": "Système d'exploitation",
79
+ "modal.device.ip": "IP",
80
+ "modal.timeline.login": "Connexion",
81
+ "modal.timeline.lastActive": "Dernière activité",
82
+ "modal.timeline.idleTime": "Temps d'inactivité",
83
+ "modal.timeline.logout": "Déconnexion",
84
+ "modal.timeline.minutes": "{minutes} min",
85
+ "modal.security.loading": "Chargement des données de localisation...",
86
+ "modal.security.country": "Pays",
87
+ "modal.security.city": "Ville",
88
+ "modal.security.timezone": "Fuseau horaire",
89
+ "modal.security.score": "Sécurité",
90
+ "modal.security.vpn": "VPN",
91
+ "modal.security.proxy": "Proxy",
92
+ "modal.security.vpnWarning": "[ATTENTION] Oui",
93
+ "modal.security.no": "Non",
94
+ "modal.premium.title": "Analyse de Localisation et Sécurité",
95
+ "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",
96
+ "modal.premium.upgrade": "Passer à Premium",
97
+ "modal.technical.show": "Afficher les Détails",
98
+ "modal.technical.hide": "Masquer les Détails",
99
+ "modal.actions.close": "Fermer",
100
+ "modal.actions.terminate": "Terminer la Session",
101
+ "modal.confirm.terminate": "Êtes-vous sûr de vouloir terminer cette session ?",
102
+ "panel.title": "Info Session",
103
+ "panel.loading": "Chargement...",
104
+ "panel.status.active": "ACTIF",
105
+ "panel.status.offline": "HORS LIGNE",
106
+ "panel.sessions.count": "{count} session(s) active(s)",
107
+ "panel.sessions.title": "Sessions Actives",
108
+ "panel.sessions.active": "Actif",
109
+ "panel.sessions.activeNow": "Actif maintenant",
110
+ "panel.sessions.activeAgo": "Actif il y a {minutes} min",
111
+ "panel.sessions.more": "+{count} session(s) supplémentaire(s)",
112
+ "panel.blocked.title": "Utilisateur bloqué",
113
+ "panel.blocked.description": "Authentification désactivée",
114
+ "panel.empty.title": "Aucune session active",
115
+ "panel.empty.description": "L'utilisateur ne s'est pas encore connecté",
116
+ "panel.actions.title": "Actions",
117
+ "panel.actions.terminateAll": "Terminer Toutes les Sessions",
118
+ "panel.actions.blockUser": "Bloquer l'Utilisateur",
119
+ "panel.actions.unblockUser": "Débloquer l'Utilisateur",
120
+ "settings.title": "Paramètres Session Manager",
121
+ "settings.subtitle": "Configurer le suivi des sessions, la sécurité et les notifications par e-mail",
122
+ "settings.save": "Enregistrer les Modifications",
123
+ "settings.saving": "Enregistrement...",
124
+ "settings.noChanges": "Aucune Modification",
125
+ "settings.reset": "Réinitialiser",
126
+ "settings.license.title": "Statut de Licence Actuel",
127
+ "settings.license.premium": "Premium",
128
+ "settings.license.advanced": "Advanced",
129
+ "settings.license.enterprise": "Enterprise",
130
+ "settings.general.title": "Paramètres Généraux",
131
+ "settings.general.description": "Configuration de base du suivi des sessions",
132
+ "settings.general.timeout.title": "DÉLAI D'EXPIRATION DE SESSION",
133
+ "settings.general.timeout.inactivity": "Délai d'Inactivité",
134
+ "settings.general.timeout.inactivityHint": "Les sessions inactives depuis plus de {minutes} minutes seront marquées comme hors ligne",
135
+ "settings.general.timeout.5min": "5 minutes (Très strict)",
136
+ "settings.general.timeout.10min": "10 minutes (Strict)",
137
+ "settings.general.timeout.15min": "15 minutes (Recommandé)",
138
+ "settings.general.timeout.30min": "30 minutes (Modéré)",
139
+ "settings.general.timeout.1hour": "1 heure (Souple)",
140
+ "settings.general.timeout.2hours": "2 heures (Très souple)",
141
+ "settings.general.rateLimit.title": "Limite de Taux de Dernière Vue",
142
+ "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",
143
+ "settings.general.rateLimit.10sec": "10 secondes",
144
+ "settings.general.rateLimit.30sec": "30 secondes (Recommandé)",
145
+ "settings.general.rateLimit.1min": "1 minute",
146
+ "settings.general.rateLimit.2min": "2 minutes",
147
+ "settings.general.rateLimit.5min": "5 minutes",
148
+ "settings.general.cleanup.title": "NETTOYAGE ET RÉTENTION AUTOMATIQUES",
149
+ "settings.general.cleanup.interval": "Intervalle de Nettoyage",
150
+ "settings.general.cleanup.intervalHint": "Les sessions inactives sont automatiquement nettoyées toutes les {minutes} minutes",
151
+ "settings.general.cleanup.15min": "15 minutes",
152
+ "settings.general.cleanup.30min": "30 minutes (Recommandé)",
153
+ "settings.general.cleanup.1hour": "1 heure",
154
+ "settings.general.cleanup.2hours": "2 heures",
155
+ "settings.general.retention.title": "Période de Rétention",
156
+ "settings.general.retention.hint": "Les anciennes sessions sont supprimées après {days}",
157
+ "settings.general.retention.hintNever": "Les anciennes sessions ne sont jamais supprimées",
158
+ "settings.general.retention.7days": "7 jours",
159
+ "settings.general.retention.30days": "30 jours",
160
+ "settings.general.retention.60days": "60 jours",
161
+ "settings.general.retention.90days": "90 jours (Recommandé)",
162
+ "settings.general.retention.180days": "180 jours",
163
+ "settings.general.retention.1year": "1 an",
164
+ "settings.general.retention.forever": "Pour toujours",
165
+ "settings.general.danger.title": "Zone de Danger",
166
+ "settings.general.danger.description": "Nettoyer Toutes les Inactives : Supprime définitivement toutes les sessions inactives. Cette action est irréversible.",
167
+ "settings.general.danger.cleanNow": "Nettoyer Maintenant",
168
+ "settings.general.danger.confirm": "[ATTENTION] Cela supprimera définitivement TOUTES les sessions inactives.\n\nContinuer ?",
169
+ "settings.security.title": "Paramètres de Sécurité",
170
+ "settings.security.description": "Politiques de sécurité et protection contre les menaces",
171
+ "settings.security.options": "OPTIONS DE SÉCURITÉ",
172
+ "settings.security.encryption.title": "Générateur de Clé de Chiffrement JWT",
173
+ "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.",
174
+ "settings.security.encryption.important": "Important",
175
+ "settings.security.encryption.envHint": "Ajoutez cette clé à votre fichier .env comme SESSION_ENCRYPTION_KEY pour la production.",
176
+ "settings.security.encryption.label": "Clé de Chiffrement Générée",
177
+ "settings.security.encryption.placeholder": "Cliquez sur 'Générer une Clé' pour créer une clé sécurisée",
178
+ "settings.security.encryption.show": "Afficher",
179
+ "settings.security.encryption.hide": "Masquer",
180
+ "settings.security.encryption.generate": "Générer une Clé",
181
+ "settings.security.encryption.copy": "Copier dans le Presse-papiers",
182
+ "settings.security.encryption.copyEnv": "Copier pour .env",
183
+ "settings.security.encryption.envLabel": "Ajouter au fichier .env :",
184
+ "settings.security.blockSuspicious.title": "Bloquer les Sessions Suspectes",
185
+ "settings.security.blockSuspicious.description": "Bloquer automatiquement les sessions provenant de VPNs, proxys ou IPs de menaces",
186
+ "settings.security.geolocation.title": "Géolocalisation IP",
187
+ "settings.security.geolocation.description": "Récupérer les données de localisation pour chaque session (Premium)",
188
+ "settings.security.scoring.title": "Score de Sécurité",
189
+ "settings.security.scoring.description": "Calculer les scores de sécurité et détecter les menaces (Premium)",
190
+ "settings.security.maxFailed.title": "Max. Tentatives de Connexion Échouées",
191
+ "settings.security.maxFailed.hint": "L'utilisateur sera bloqué après {count} tentatives échouées",
192
+ "settings.email.title": "Notifications par E-mail (Advanced)",
193
+ "settings.email.description": "Alertes par e-mail pour les événements de sécurité",
194
+ "settings.email.alerts.title": "ALERTES PAR E-MAIL",
195
+ "settings.email.alerts.subtitle": "Envoyer des alertes de sécurité aux utilisateurs par e-mail",
196
+ "settings.email.enable.title": "Activer les Alertes par E-mail",
197
+ "settings.email.enable.description": "Envoyer des alertes de sécurité pour les connexions suspectes, les nouvelles localisations et l'utilisation de VPN/Proxy",
198
+ "settings.email.types.title": "TYPES D'ALERTES",
199
+ "settings.email.types.suspicious": "Connexion Suspecte",
200
+ "settings.email.types.newLocation": "Nouvelle Localisation",
201
+ "settings.email.types.vpnProxy": "VPN/Proxy",
202
+ "settings.email.templates.title": "MODÈLES D'E-MAIL",
203
+ "settings.email.templates.subtitle": "Personnaliser les modèles de notification avec des variables dynamiques",
204
+ "settings.email.templates.subject": "Sujet de l'E-mail",
205
+ "settings.email.templates.subjectPlaceholder": "Entrez le sujet de l'e-mail...",
206
+ "settings.email.templates.variables": "Variables Disponibles (cliquez pour copier)",
207
+ "settings.email.templates.html.title": "Modèle HTML",
208
+ "settings.email.templates.html.badge": "Modèle Principal",
209
+ "settings.email.templates.html.description": "Modèle HTML pour les notifications. Utilisez des variables comme {{user.email}} pour le contenu dynamique.",
210
+ "settings.email.templates.html.loadDefault": "Charger le Défaut",
211
+ "settings.email.templates.html.copy": "Copier le Modèle",
212
+ "settings.email.templates.html.validate": "Valider",
213
+ "settings.email.templates.html.info": "Info du Modèle",
214
+ "settings.email.templates.text.title": "Modèle Texte",
215
+ "settings.email.templates.text.badge": "Alternative",
216
+ "settings.email.templates.text.description": "Version texte brut (sans HTML) comme alternative pour les anciens clients de messagerie",
217
+ "settings.email.templates.text.loadDefault": "Charger le Défaut",
218
+ "settings.email.templates.text.copy": "Copier le Modèle",
219
+ "settings.email.templates.tab.suspicious": "Connexion Suspecte",
220
+ "settings.email.templates.tab.newLocation": "Nouvelle Localisation",
221
+ "settings.email.templates.tab.vpnProxy": "VPN/Proxy",
222
+ "settings.webhooks.title": "Intégration Webhooks (Advanced)",
223
+ "settings.webhooks.description": "Intégration Discord et Slack",
224
+ "settings.webhooks.enable.title": "Activer les Webhooks",
225
+ "settings.webhooks.enable.description": "Envoyer les événements de session vers Discord, Slack ou des endpoints personnalisés",
226
+ "settings.webhooks.discord.title": "URL Webhook Discord",
227
+ "settings.webhooks.discord.placeholder": "https://discord.com/api/webhooks/123456789/abcdefghijklmnopqrstuvwxyz...",
228
+ "settings.webhooks.discord.hint": "Optionnel : Publier les alertes de session sur votre canal Discord",
229
+ "settings.webhooks.slack.title": "URL Webhook Slack",
230
+ "settings.webhooks.slack.placeholder": "https://hooks.slack.com/services/XXXX/XXXX/XXXX",
231
+ "settings.webhooks.slack.hint": "Optionnel : Publier les alertes de session sur votre espace Slack",
232
+ "settings.webhooks.characters": "{count} caractères",
233
+ "settings.footer.title": "Paramètres Sauvegardés en Base de Données",
234
+ "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.",
235
+ "common.loading": "Chargement...",
236
+ "common.save": "Enregistrer",
237
+ "common.cancel": "Annuler",
238
+ "common.close": "Fermer",
239
+ "common.delete": "Supprimer",
240
+ "common.confirm": "Confirmer",
241
+ "common.yes": "Oui",
242
+ "common.no": "Non",
243
+ "common.on": "le",
244
+ "common.active": "ACTIF",
245
+ "common.inactive": "INACTIF",
246
+ "notifications.success.saved": "Paramètres enregistrés avec succès dans la base de données !",
247
+ "notifications.success.deleted": "Session supprimée définitivement",
248
+ "notifications.success.terminated": "Session terminée avec succès",
249
+ "notifications.success.terminatedAll": "Toutes les sessions terminées avec succès",
250
+ "notifications.success.blocked": "Utilisateur bloqué avec succès",
251
+ "notifications.success.unblocked": "Utilisateur débloqué avec succès",
252
+ "notifications.success.exported": "{count} sessions exportées en {format}",
253
+ "notifications.success.cleaned": "{count} sessions inactives supprimées avec succès !",
254
+ "notifications.success.keyCopied": "Clé de chiffrement copiée dans le presse-papiers !",
255
+ "notifications.success.keyGenerated": "Clé de chiffrement de 32 caractères générée !",
256
+ "notifications.success.envCopied": "Copié au format .env !",
257
+ "notifications.success.templateCopied": "Modèle copié !",
258
+ "notifications.success.htmlCopied": "Modèle HTML copié !",
259
+ "notifications.success.textCopied": "Modèle texte copié !",
260
+ "notifications.success.defaultLoaded": "Modèle par défaut chargé !",
261
+ "notifications.success.variableCopied": "{variable} copié !",
262
+ "notifications.success.validated": "Modèle valide ! {found}/{total} variables trouvées.",
263
+ "notifications.warning.premiumRequired": "Licence Premium requise pour la fonction d'exportation",
264
+ "notifications.warning.noVariables": "[ATTENTION] Aucune variable trouvée. Ajoutez au moins une variable.",
265
+ "notifications.warning.settingsLoad": "Impossible de charger les paramètres depuis le serveur. Utilisation des valeurs par défaut.",
266
+ "notifications.error.terminate": "Échec de la terminaison de la session",
267
+ "notifications.error.terminateAll": "Échec de la terminaison des sessions",
268
+ "notifications.error.delete": "Échec de la suppression de la session",
269
+ "notifications.error.block": "Échec de la mise à jour du statut de l'utilisateur",
270
+ "notifications.error.save": "Échec de l'enregistrement des paramètres sur le serveur",
271
+ "notifications.error.clean": "Échec de la suppression des sessions inactives",
272
+ "notifications.error.export": "Échec de l'exportation des sessions",
273
+ "notifications.info.templateStats": "Le modèle contient {lines} lignes et {chars} caractères"
274
+ };
275
+ export {
276
+ fr as default
277
+ };