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
@@ -37,12 +37,12 @@ module.exports = ({ strapi }) => ({
37
37
  strapi.log.debug('[magic-sessionmanager/notifications] Using default fallback templates');
38
38
  return {
39
39
  suspiciousLogin: {
40
- subject: '🚨 Suspicious Login Alert - Session Manager',
40
+ subject: '[ALERT] Suspicious Login Alert - Session Manager',
41
41
  html: `
42
42
  <html>
43
43
  <body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
44
44
  <div style="max-width: 600px; margin: 0 auto; padding: 20px; background-color: #f9fafb; border-radius: 10px;">
45
- <h2 style="color: #dc2626;">🚨 Suspicious Login Detected</h2>
45
+ <h2 style="color: #dc2626;">[ALERT] Suspicious Login Detected</h2>
46
46
  <p>A potentially suspicious login was detected for your account.</p>
47
47
 
48
48
  <div style="background: white; padding: 15px; border-radius: 8px; margin: 20px 0;">
@@ -77,7 +77,7 @@ module.exports = ({ strapi }) => ({
77
77
  </div>
78
78
  </body>
79
79
  </html>`,
80
- text: `🚨 Suspicious Login Detected\n\nA potentially suspicious login was detected for your account.\n\nAccount: {{user.email}}\nUsername: {{user.username}}\n\nLogin Details:\n- Time: {{session.loginTime}}\n- IP: {{session.ipAddress}}\n- Location: {{geo.city}}, {{geo.country}}\n\nSecurity: VPN={{reason.isVpn}}, Proxy={{reason.isProxy}}, Threat={{reason.isThreat}}, Score={{reason.securityScore}}/100`,
80
+ text: `[ALERT] Suspicious Login Detected\n\nA potentially suspicious login was detected for your account.\n\nAccount: {{user.email}}\nUsername: {{user.username}}\n\nLogin Details:\n- Time: {{session.loginTime}}\n- IP: {{session.ipAddress}}\n- Location: {{geo.city}}, {{geo.country}}\n\nSecurity: VPN={{reason.isVpn}}, Proxy={{reason.isProxy}}, Threat={{reason.isThreat}}, Score={{reason.securityScore}}/100`,
81
81
  },
82
82
  newLocation: {
83
83
  subject: '[LOCATION] New Location Login Detected',
@@ -262,9 +262,9 @@ module.exports = ({ strapi }) => ({
262
262
  title: this.getEventTitle(event),
263
263
  color: this.getEventColor(event),
264
264
  fields: [
265
- { name: '👤 User', value: `${user.email}\n${user.username || 'N/A'}`, inline: true },
266
- { name: '🌐 IP', value: session.ipAddress, inline: true },
267
- { name: '📅 Time', value: new Date(session.loginTime).toLocaleString(), inline: false },
265
+ { name: 'User', value: `${user.email}\n${user.username || 'N/A'}`, inline: true },
266
+ { name: 'IP', value: session.ipAddress, inline: true },
267
+ { name: 'Time', value: new Date(session.loginTime).toLocaleString(), inline: false },
268
268
  ],
269
269
  timestamp: new Date().toISOString(),
270
270
  footer: { text: 'Magic Session Manager' },
@@ -296,11 +296,11 @@ module.exports = ({ strapi }) => ({
296
296
 
297
297
  getEventTitle(event) {
298
298
  const titles = {
299
- 'login.suspicious': '🚨 Suspicious Login',
299
+ 'login.suspicious': '[ALERT] Suspicious Login',
300
300
  'login.new_location': '[LOCATION] New Location Login',
301
- 'login.vpn': '🔴 VPN Login Detected',
302
- 'login.threat': ' Threat IP Login',
303
- 'session.terminated': '🔴 Session Terminated',
301
+ 'login.vpn': '[WARNING] VPN Login Detected',
302
+ 'login.threat': '[THREAT] Threat IP Login',
303
+ 'session.terminated': '[INFO] Session Terminated',
304
304
  };
305
305
  return titles[event] || '[STATS] Session Event';
306
306
  },
@@ -63,6 +63,7 @@ module.exports = ({ strapi }) => ({
63
63
 
64
64
  /**
65
65
  * Terminate a session or all sessions for a user
66
+ * Supports both numeric id (legacy) and documentId (Strapi v5)
66
67
  * @param {Object} params - { sessionId | userId }
67
68
  * @returns {Promise<void>}
68
69
  */
@@ -82,10 +83,19 @@ module.exports = ({ strapi }) => ({
82
83
 
83
84
  strapi.log.info(`[magic-sessionmanager] Session ${sessionId} terminated`);
84
85
  } else if (userId) {
86
+ // Strapi v5: If numeric id provided, look up documentId first
87
+ let userDocumentId = userId;
88
+ if (!isNaN(userId)) {
89
+ const user = await strapi.entityService.findOne(USER_UID, parseInt(userId, 10));
90
+ if (user) {
91
+ userDocumentId = user.documentId;
92
+ }
93
+ }
94
+
85
95
  // Find all active sessions for user - use Deep Filtering (Strapi v5)
86
96
  const activeSessions = await strapi.documents(SESSION_UID).findMany({
87
97
  filters: {
88
- user: { documentId: userId }, // Deep filtering syntax
98
+ user: { documentId: userDocumentId }, // Deep filtering syntax
89
99
  isActive: true,
90
100
  },
91
101
  });
@@ -101,7 +111,7 @@ module.exports = ({ strapi }) => ({
101
111
  });
102
112
  }
103
113
 
104
- strapi.log.info(`[magic-sessionmanager] All sessions terminated for user ${userId}`);
114
+ strapi.log.info(`[magic-sessionmanager] All sessions terminated for user ${userDocumentId}`);
105
115
  }
106
116
  } catch (err) {
107
117
  strapi.log.error('[magic-sessionmanager] Error terminating session:', err);
@@ -196,13 +206,23 @@ module.exports = ({ strapi }) => ({
196
206
 
197
207
  /**
198
208
  * Get all sessions for a specific user
199
- * @param {number} userId
209
+ * Supports both numeric id (legacy) and documentId (Strapi v5)
210
+ * @param {string|number} userId - User documentId or numeric id
200
211
  * @returns {Promise<Array>} User's sessions with accurate online status
201
212
  */
202
213
  async getUserSessions(userId) {
203
214
  try {
215
+ // Strapi v5: If numeric id provided, look up documentId first
216
+ let userDocumentId = userId;
217
+ if (!isNaN(userId)) {
218
+ const user = await strapi.entityService.findOne(USER_UID, parseInt(userId, 10));
219
+ if (user) {
220
+ userDocumentId = user.documentId;
221
+ }
222
+ }
223
+
204
224
  const sessions = await strapi.documents(SESSION_UID).findMany( {
205
- filters: { user: { documentId: userId } },
225
+ filters: { user: { documentId: userDocumentId } },
206
226
  sort: { loginTime: 'desc' },
207
227
  });
208
228
 
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const de = {
4
- "plugin.name": "Session Manager",
5
- "plugin.description": "Verfolgung von Benutzer-Login/Logout und Sitzungsaktivität",
6
- "settings.section": "Session Manager",
7
- "settings.sessions": "Aktive Sitzungen",
8
- "settings.emailTemplates.title": "E-Mail Templates",
9
- "settings.emailTemplates.description": "Passe E-Mail-Benachrichtigungen mit dynamischen Variablen an",
10
- "settings.emailTemplates.validate": "Validieren",
11
- "settings.emailTemplates.loadDefault": "Standard-Template laden",
12
- "settings.emailTemplates.subject": "E-Mail Betreff",
13
- "settings.emailTemplates.htmlTemplate": "HTML Template",
14
- "settings.emailTemplates.textTemplate": "Text Template (Fallback)",
15
- "settings.emailTemplates.variables": "Verfügbare Variablen (klicken zum Kopieren)",
16
- "settings.emailTemplates.validation.success": "Template gültig! {count} Variablen gefunden.",
17
- "settings.emailTemplates.validation.warning": "Keine Variablen im Template gefunden. Füge mindestens eine Variable hinzu.",
18
- "settings.emailTemplates.defaultLoaded": "Standard-Template geladen!",
19
- "settings.emailTemplates.suspiciousLogin": "Verdächtiger Login",
20
- "settings.emailTemplates.newLocation": "Neuer Standort",
21
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
22
- };
23
- exports.default = de;
@@ -1,23 +0,0 @@
1
- const de = {
2
- "plugin.name": "Session Manager",
3
- "plugin.description": "Verfolgung von Benutzer-Login/Logout und Sitzungsaktivität",
4
- "settings.section": "Session Manager",
5
- "settings.sessions": "Aktive Sitzungen",
6
- "settings.emailTemplates.title": "E-Mail Templates",
7
- "settings.emailTemplates.description": "Passe E-Mail-Benachrichtigungen mit dynamischen Variablen an",
8
- "settings.emailTemplates.validate": "Validieren",
9
- "settings.emailTemplates.loadDefault": "Standard-Template laden",
10
- "settings.emailTemplates.subject": "E-Mail Betreff",
11
- "settings.emailTemplates.htmlTemplate": "HTML Template",
12
- "settings.emailTemplates.textTemplate": "Text Template (Fallback)",
13
- "settings.emailTemplates.variables": "Verfügbare Variablen (klicken zum Kopieren)",
14
- "settings.emailTemplates.validation.success": "Template gültig! {count} Variablen gefunden.",
15
- "settings.emailTemplates.validation.warning": "Keine Variablen im Template gefunden. Füge mindestens eine Variable hinzu.",
16
- "settings.emailTemplates.defaultLoaded": "Standard-Template geladen!",
17
- "settings.emailTemplates.suspiciousLogin": "Verdächtiger Login",
18
- "settings.emailTemplates.newLocation": "Neuer Standort",
19
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
20
- };
21
- export {
22
- de as default
23
- };
@@ -1,23 +0,0 @@
1
- const en = {
2
- "plugin.name": "Session Manager",
3
- "plugin.description": "Track user login/logout and session activity",
4
- "settings.section": "Session Manager",
5
- "settings.sessions": "Active Sessions",
6
- "settings.emailTemplates.title": "Email Templates",
7
- "settings.emailTemplates.description": "Customize email notification templates with dynamic variables",
8
- "settings.emailTemplates.validate": "Validate",
9
- "settings.emailTemplates.loadDefault": "Load Default Template",
10
- "settings.emailTemplates.subject": "Email Subject",
11
- "settings.emailTemplates.htmlTemplate": "HTML Template",
12
- "settings.emailTemplates.textTemplate": "Text Template (Fallback)",
13
- "settings.emailTemplates.variables": "Available Variables (click to copy)",
14
- "settings.emailTemplates.validation.success": "Template valid! Found {count} variables.",
15
- "settings.emailTemplates.validation.warning": "No variables found in template. Add at least one variable.",
16
- "settings.emailTemplates.defaultLoaded": "Default template loaded!",
17
- "settings.emailTemplates.suspiciousLogin": "Suspicious Login",
18
- "settings.emailTemplates.newLocation": "New Location",
19
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
20
- };
21
- export {
22
- en as default
23
- };
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const en = {
4
- "plugin.name": "Session Manager",
5
- "plugin.description": "Track user login/logout and session activity",
6
- "settings.section": "Session Manager",
7
- "settings.sessions": "Active Sessions",
8
- "settings.emailTemplates.title": "Email Templates",
9
- "settings.emailTemplates.description": "Customize email notification templates with dynamic variables",
10
- "settings.emailTemplates.validate": "Validate",
11
- "settings.emailTemplates.loadDefault": "Load Default Template",
12
- "settings.emailTemplates.subject": "Email Subject",
13
- "settings.emailTemplates.htmlTemplate": "HTML Template",
14
- "settings.emailTemplates.textTemplate": "Text Template (Fallback)",
15
- "settings.emailTemplates.variables": "Available Variables (click to copy)",
16
- "settings.emailTemplates.validation.success": "Template valid! Found {count} variables.",
17
- "settings.emailTemplates.validation.warning": "No variables found in template. Add at least one variable.",
18
- "settings.emailTemplates.defaultLoaded": "Default template loaded!",
19
- "settings.emailTemplates.suspiciousLogin": "Suspicious Login",
20
- "settings.emailTemplates.newLocation": "New Location",
21
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
22
- };
23
- exports.default = en;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const es = {
4
- "plugin.name": "Gestor de Sesiones",
5
- "plugin.description": "Seguimiento de inicio/cierre de sesión y actividad de usuarios",
6
- "settings.section": "Gestor de Sesiones",
7
- "settings.sessions": "Sesiones Activas",
8
- "settings.emailTemplates.title": "Plantillas de Correo",
9
- "settings.emailTemplates.description": "Personalizar plantillas de notificación por correo con variables dinámicas",
10
- "settings.emailTemplates.validate": "Validar",
11
- "settings.emailTemplates.loadDefault": "Cargar Plantilla Predeterminada",
12
- "settings.emailTemplates.subject": "Asunto del Correo",
13
- "settings.emailTemplates.htmlTemplate": "Plantilla HTML",
14
- "settings.emailTemplates.textTemplate": "Plantilla de Texto (Respaldo)",
15
- "settings.emailTemplates.variables": "Variables Disponibles (clic para copiar)",
16
- "settings.emailTemplates.validation.success": "¡Plantilla válida! Se encontraron {count} variables.",
17
- "settings.emailTemplates.validation.warning": "No se encontraron variables en la plantilla. Agregue al menos una variable.",
18
- "settings.emailTemplates.defaultLoaded": "¡Plantilla predeterminada cargada!",
19
- "settings.emailTemplates.suspiciousLogin": "Inicio de Sesión Sospechoso",
20
- "settings.emailTemplates.newLocation": "Nueva Ubicación",
21
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
22
- };
23
- exports.default = es;
@@ -1,23 +0,0 @@
1
- const es = {
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",
5
- "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"
20
- };
21
- export {
22
- es as default
23
- };
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fr = {
4
- "plugin.name": "Gestionnaire de Sessions",
5
- "plugin.description": "Suivi des connexions/déconnexions et activité des utilisateurs",
6
- "settings.section": "Gestionnaire de Sessions",
7
- "settings.sessions": "Sessions Actives",
8
- "settings.emailTemplates.title": "Modèles d'Email",
9
- "settings.emailTemplates.description": "Personnaliser les modèles de notification par email avec des variables dynamiques",
10
- "settings.emailTemplates.validate": "Valider",
11
- "settings.emailTemplates.loadDefault": "Charger le Modèle par Défaut",
12
- "settings.emailTemplates.subject": "Objet de l'Email",
13
- "settings.emailTemplates.htmlTemplate": "Modèle HTML",
14
- "settings.emailTemplates.textTemplate": "Modèle Texte (Secours)",
15
- "settings.emailTemplates.variables": "Variables Disponibles (cliquez pour copier)",
16
- "settings.emailTemplates.validation.success": "Modèle valide! {count} variables trouvées.",
17
- "settings.emailTemplates.validation.warning": "Aucune variable trouvée dans le modèle. Ajoutez au moins une variable.",
18
- "settings.emailTemplates.defaultLoaded": "Modèle par défaut chargé!",
19
- "settings.emailTemplates.suspiciousLogin": "Connexion Suspecte",
20
- "settings.emailTemplates.newLocation": "Nouvelle Localisation",
21
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
22
- };
23
- exports.default = fr;
@@ -1,23 +0,0 @@
1
- const fr = {
2
- "plugin.name": "Gestionnaire de Sessions",
3
- "plugin.description": "Suivi des connexions/déconnexions et activité des utilisateurs",
4
- "settings.section": "Gestionnaire de Sessions",
5
- "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"
20
- };
21
- export {
22
- fr as default
23
- };
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const pt = {
4
- "plugin.name": "Gerenciador de Sessões",
5
- "plugin.description": "Rastreamento de login/logout e atividade de usuários",
6
- "settings.section": "Gerenciador de Sessões",
7
- "settings.sessions": "Sessões Ativas",
8
- "settings.emailTemplates.title": "Modelos de Email",
9
- "settings.emailTemplates.description": "Personalizar modelos de notificação por email com variáveis dinâmicas",
10
- "settings.emailTemplates.validate": "Validar",
11
- "settings.emailTemplates.loadDefault": "Carregar Modelo Padrão",
12
- "settings.emailTemplates.subject": "Assunto do Email",
13
- "settings.emailTemplates.htmlTemplate": "Modelo HTML",
14
- "settings.emailTemplates.textTemplate": "Modelo de Texto (Reserva)",
15
- "settings.emailTemplates.variables": "Variáveis Disponíveis (clique para copiar)",
16
- "settings.emailTemplates.validation.success": "Modelo válido! {count} variáveis encontradas.",
17
- "settings.emailTemplates.validation.warning": "Nenhuma variável encontrada no modelo. Adicione pelo menos uma variável.",
18
- "settings.emailTemplates.defaultLoaded": "Modelo padrão carregado!",
19
- "settings.emailTemplates.suspiciousLogin": "Login Suspeito",
20
- "settings.emailTemplates.newLocation": "Nova Localização",
21
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
22
- };
23
- exports.default = pt;
@@ -1,23 +0,0 @@
1
- const pt = {
2
- "plugin.name": "Gerenciador de Sessões",
3
- "plugin.description": "Rastreamento de login/logout e atividade de usuários",
4
- "settings.section": "Gerenciador de Sessões",
5
- "settings.sessions": "Sessões Ativas",
6
- "settings.emailTemplates.title": "Modelos de Email",
7
- "settings.emailTemplates.description": "Personalizar modelos de notificação por email com variáveis dinâmicas",
8
- "settings.emailTemplates.validate": "Validar",
9
- "settings.emailTemplates.loadDefault": "Carregar Modelo Padrão",
10
- "settings.emailTemplates.subject": "Assunto do Email",
11
- "settings.emailTemplates.htmlTemplate": "Modelo HTML",
12
- "settings.emailTemplates.textTemplate": "Modelo de Texto (Reserva)",
13
- "settings.emailTemplates.variables": "Variáveis Disponíveis (clique para copiar)",
14
- "settings.emailTemplates.validation.success": "Modelo válido! {count} variáveis encontradas.",
15
- "settings.emailTemplates.validation.warning": "Nenhuma variável encontrada no modelo. Adicione pelo menos uma variável.",
16
- "settings.emailTemplates.defaultLoaded": "Modelo padrão carregado!",
17
- "settings.emailTemplates.suspiciousLogin": "Login Suspeito",
18
- "settings.emailTemplates.newLocation": "Nova Localização",
19
- "settings.emailTemplates.vpnProxy": "VPN/Proxy"
20
- };
21
- export {
22
- pt as default
23
- };