strapi-plugin-magic-sessionmanager 4.2.11 → 4.2.12

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.
@@ -455,8 +455,10 @@ var bootstrap$1 = async ({ strapi: strapi2 }) => {
455
455
  userAgent,
456
456
  token: ctx.body.jwt,
457
457
  // Store Access Token (encrypted)
458
- refreshToken: ctx.body.refreshToken
458
+ refreshToken: ctx.body.refreshToken,
459
459
  // Store Refresh Token (encrypted) if exists
460
+ geoData
461
+ // Store geolocation data if available
460
462
  });
461
463
  log.info(`[SUCCESS] Session created for user ${userDocId} (IP: ${ip})`);
462
464
  if (geoData && (config2.enableEmailAlerts || config2.enableWebhooks)) {
@@ -1198,6 +1200,14 @@ var session$3 = {
1198
1200
  const deviceType = session2.deviceType || parsedUA.deviceType;
1199
1201
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
1200
1202
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
1203
+ let geoLocation = session2.geoLocation;
1204
+ if (typeof geoLocation === "string") {
1205
+ try {
1206
+ geoLocation = JSON.parse(geoLocation);
1207
+ } catch (e) {
1208
+ geoLocation = null;
1209
+ }
1210
+ }
1201
1211
  const {
1202
1212
  token,
1203
1213
  tokenHash,
@@ -1206,6 +1216,8 @@ var session$3 = {
1206
1216
  locale,
1207
1217
  publishedAt,
1208
1218
  // Remove Strapi internal fields
1219
+ geoLocation: _geo,
1220
+ // Remove raw geoLocation
1209
1221
  ...sessionWithoutTokens
1210
1222
  } = session2;
1211
1223
  return {
@@ -1213,6 +1225,8 @@ var session$3 = {
1213
1225
  deviceType,
1214
1226
  browserName,
1215
1227
  osName,
1228
+ geoLocation,
1229
+ // Parsed object or null
1216
1230
  isCurrentSession,
1217
1231
  isTrulyActive,
1218
1232
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
@@ -1347,6 +1361,14 @@ var session$3 = {
1347
1361
  const deviceType = currentSession.deviceType || parsedUA.deviceType;
1348
1362
  const browserName = currentSession.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
1349
1363
  const osName = currentSession.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
1364
+ let geoLocation = currentSession.geoLocation;
1365
+ if (typeof geoLocation === "string") {
1366
+ try {
1367
+ geoLocation = JSON.parse(geoLocation);
1368
+ } catch (e) {
1369
+ geoLocation = null;
1370
+ }
1371
+ }
1350
1372
  const {
1351
1373
  token: _,
1352
1374
  tokenHash: _th,
@@ -1354,6 +1376,7 @@ var session$3 = {
1354
1376
  refreshTokenHash: _rth,
1355
1377
  locale: _l,
1356
1378
  publishedAt: _p,
1379
+ geoLocation: _geo,
1357
1380
  ...sessionWithoutTokens
1358
1381
  } = currentSession;
1359
1382
  ctx.body = {
@@ -1362,6 +1385,8 @@ var session$3 = {
1362
1385
  deviceType,
1363
1386
  browserName,
1364
1387
  osName,
1388
+ geoLocation,
1389
+ // Parsed object or null
1365
1390
  isCurrentSession: true,
1366
1391
  isTrulyActive: timeSinceActive < inactivityTimeout,
1367
1392
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
@@ -1905,10 +1930,10 @@ var session$1 = ({ strapi: strapi2 }) => {
1905
1930
  return {
1906
1931
  /**
1907
1932
  * Create a new session record
1908
- * @param {Object} params - { userId, ip, userAgent, token, refreshToken }
1933
+ * @param {Object} params - { userId, ip, userAgent, token, refreshToken, geoData }
1909
1934
  * @returns {Promise<Object>} Created session
1910
1935
  */
1911
- async createSession({ userId, ip = "unknown", userAgent = "unknown", token, refreshToken }) {
1936
+ async createSession({ userId, ip = "unknown", userAgent = "unknown", token, refreshToken, geoData }) {
1912
1937
  try {
1913
1938
  const now = /* @__PURE__ */ new Date();
1914
1939
  const sessionId = generateSessionId(userId);
@@ -1916,6 +1941,7 @@ var session$1 = ({ strapi: strapi2 }) => {
1916
1941
  const encryptedRefreshToken = refreshToken ? encryptToken(refreshToken) : null;
1917
1942
  const tokenHashValue = token ? hashToken(token) : null;
1918
1943
  const refreshTokenHashValue = refreshToken ? hashToken(refreshToken) : null;
1944
+ const parsedUA = parseUserAgent(userAgent);
1919
1945
  const session2 = await strapi2.documents(SESSION_UID).create({
1920
1946
  data: {
1921
1947
  user: userId,
@@ -1933,8 +1959,22 @@ var session$1 = ({ strapi: strapi2 }) => {
1933
1959
  // Encrypted Refresh Token
1934
1960
  refreshTokenHash: refreshTokenHashValue,
1935
1961
  // SHA-256 hash for fast lookup
1936
- sessionId
1962
+ sessionId,
1937
1963
  // Unique identifier
1964
+ // Device info from User-Agent
1965
+ deviceType: parsedUA.deviceType,
1966
+ browserName: parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName,
1967
+ osName: parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName,
1968
+ // Geolocation data (if available from Premium features)
1969
+ geoLocation: geoData ? JSON.stringify({
1970
+ country: geoData.country,
1971
+ country_code: geoData.country_code,
1972
+ country_flag: geoData.country_flag,
1973
+ city: geoData.city,
1974
+ region: geoData.region,
1975
+ timezone: geoData.timezone
1976
+ }) : null,
1977
+ securityScore: geoData?.securityScore || null
1938
1978
  }
1939
1979
  });
1940
1980
  log.info(`[SUCCESS] Session ${session2.documentId} (${sessionId}) created for user ${userId}`);
@@ -2016,6 +2056,14 @@ var session$1 = ({ strapi: strapi2 }) => {
2016
2056
  const deviceType = session2.deviceType || parsedUA.deviceType;
2017
2057
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
2018
2058
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
2059
+ let geoLocation = session2.geoLocation;
2060
+ if (typeof geoLocation === "string") {
2061
+ try {
2062
+ geoLocation = JSON.parse(geoLocation);
2063
+ } catch (e) {
2064
+ geoLocation = null;
2065
+ }
2066
+ }
2019
2067
  const {
2020
2068
  token,
2021
2069
  tokenHash,
@@ -2023,6 +2071,8 @@ var session$1 = ({ strapi: strapi2 }) => {
2023
2071
  refreshTokenHash,
2024
2072
  locale,
2025
2073
  publishedAt,
2074
+ geoLocation: _geo,
2075
+ // Remove raw geoLocation, we use parsed version
2026
2076
  ...safeSession
2027
2077
  } = session2;
2028
2078
  return {
@@ -2030,6 +2080,8 @@ var session$1 = ({ strapi: strapi2 }) => {
2030
2080
  deviceType,
2031
2081
  browserName,
2032
2082
  osName,
2083
+ geoLocation,
2084
+ // Parsed object or null
2033
2085
  isTrulyActive,
2034
2086
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
2035
2087
  };
@@ -2062,6 +2114,14 @@ var session$1 = ({ strapi: strapi2 }) => {
2062
2114
  const deviceType = session2.deviceType || parsedUA.deviceType;
2063
2115
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
2064
2116
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
2117
+ let geoLocation = session2.geoLocation;
2118
+ if (typeof geoLocation === "string") {
2119
+ try {
2120
+ geoLocation = JSON.parse(geoLocation);
2121
+ } catch (e) {
2122
+ geoLocation = null;
2123
+ }
2124
+ }
2065
2125
  const {
2066
2126
  token,
2067
2127
  tokenHash,
@@ -2069,6 +2129,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2069
2129
  refreshTokenHash,
2070
2130
  locale,
2071
2131
  publishedAt,
2132
+ geoLocation: _geo,
2072
2133
  ...safeSession
2073
2134
  } = session2;
2074
2135
  return {
@@ -2076,6 +2137,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2076
2137
  deviceType,
2077
2138
  browserName,
2078
2139
  osName,
2140
+ geoLocation,
2079
2141
  isTrulyActive,
2080
2142
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
2081
2143
  };
@@ -2116,6 +2178,14 @@ var session$1 = ({ strapi: strapi2 }) => {
2116
2178
  const deviceType = session2.deviceType || parsedUA.deviceType;
2117
2179
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
2118
2180
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
2181
+ let geoLocation = session2.geoLocation;
2182
+ if (typeof geoLocation === "string") {
2183
+ try {
2184
+ geoLocation = JSON.parse(geoLocation);
2185
+ } catch (e) {
2186
+ geoLocation = null;
2187
+ }
2188
+ }
2119
2189
  const {
2120
2190
  token,
2121
2191
  tokenHash,
@@ -2123,6 +2193,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2123
2193
  refreshTokenHash,
2124
2194
  locale,
2125
2195
  publishedAt,
2196
+ geoLocation: _geo,
2126
2197
  ...safeSession
2127
2198
  } = session2;
2128
2199
  return {
@@ -2130,6 +2201,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2130
2201
  deviceType,
2131
2202
  browserName,
2132
2203
  osName,
2204
+ geoLocation,
2133
2205
  isTrulyActive,
2134
2206
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
2135
2207
  };
@@ -2246,7 +2318,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2246
2318
  }
2247
2319
  };
2248
2320
  };
2249
- const version = "4.2.10";
2321
+ const version = "4.2.11";
2250
2322
  const require$$2 = {
2251
2323
  version
2252
2324
  };
@@ -451,8 +451,10 @@ var bootstrap$1 = async ({ strapi: strapi2 }) => {
451
451
  userAgent,
452
452
  token: ctx.body.jwt,
453
453
  // Store Access Token (encrypted)
454
- refreshToken: ctx.body.refreshToken
454
+ refreshToken: ctx.body.refreshToken,
455
455
  // Store Refresh Token (encrypted) if exists
456
+ geoData
457
+ // Store geolocation data if available
456
458
  });
457
459
  log.info(`[SUCCESS] Session created for user ${userDocId} (IP: ${ip})`);
458
460
  if (geoData && (config2.enableEmailAlerts || config2.enableWebhooks)) {
@@ -1194,6 +1196,14 @@ var session$3 = {
1194
1196
  const deviceType = session2.deviceType || parsedUA.deviceType;
1195
1197
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
1196
1198
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
1199
+ let geoLocation = session2.geoLocation;
1200
+ if (typeof geoLocation === "string") {
1201
+ try {
1202
+ geoLocation = JSON.parse(geoLocation);
1203
+ } catch (e) {
1204
+ geoLocation = null;
1205
+ }
1206
+ }
1197
1207
  const {
1198
1208
  token,
1199
1209
  tokenHash,
@@ -1202,6 +1212,8 @@ var session$3 = {
1202
1212
  locale,
1203
1213
  publishedAt,
1204
1214
  // Remove Strapi internal fields
1215
+ geoLocation: _geo,
1216
+ // Remove raw geoLocation
1205
1217
  ...sessionWithoutTokens
1206
1218
  } = session2;
1207
1219
  return {
@@ -1209,6 +1221,8 @@ var session$3 = {
1209
1221
  deviceType,
1210
1222
  browserName,
1211
1223
  osName,
1224
+ geoLocation,
1225
+ // Parsed object or null
1212
1226
  isCurrentSession,
1213
1227
  isTrulyActive,
1214
1228
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
@@ -1343,6 +1357,14 @@ var session$3 = {
1343
1357
  const deviceType = currentSession.deviceType || parsedUA.deviceType;
1344
1358
  const browserName = currentSession.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
1345
1359
  const osName = currentSession.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
1360
+ let geoLocation = currentSession.geoLocation;
1361
+ if (typeof geoLocation === "string") {
1362
+ try {
1363
+ geoLocation = JSON.parse(geoLocation);
1364
+ } catch (e) {
1365
+ geoLocation = null;
1366
+ }
1367
+ }
1346
1368
  const {
1347
1369
  token: _,
1348
1370
  tokenHash: _th,
@@ -1350,6 +1372,7 @@ var session$3 = {
1350
1372
  refreshTokenHash: _rth,
1351
1373
  locale: _l,
1352
1374
  publishedAt: _p,
1375
+ geoLocation: _geo,
1353
1376
  ...sessionWithoutTokens
1354
1377
  } = currentSession;
1355
1378
  ctx.body = {
@@ -1358,6 +1381,8 @@ var session$3 = {
1358
1381
  deviceType,
1359
1382
  browserName,
1360
1383
  osName,
1384
+ geoLocation,
1385
+ // Parsed object or null
1361
1386
  isCurrentSession: true,
1362
1387
  isTrulyActive: timeSinceActive < inactivityTimeout,
1363
1388
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
@@ -1901,10 +1926,10 @@ var session$1 = ({ strapi: strapi2 }) => {
1901
1926
  return {
1902
1927
  /**
1903
1928
  * Create a new session record
1904
- * @param {Object} params - { userId, ip, userAgent, token, refreshToken }
1929
+ * @param {Object} params - { userId, ip, userAgent, token, refreshToken, geoData }
1905
1930
  * @returns {Promise<Object>} Created session
1906
1931
  */
1907
- async createSession({ userId, ip = "unknown", userAgent = "unknown", token, refreshToken }) {
1932
+ async createSession({ userId, ip = "unknown", userAgent = "unknown", token, refreshToken, geoData }) {
1908
1933
  try {
1909
1934
  const now = /* @__PURE__ */ new Date();
1910
1935
  const sessionId = generateSessionId(userId);
@@ -1912,6 +1937,7 @@ var session$1 = ({ strapi: strapi2 }) => {
1912
1937
  const encryptedRefreshToken = refreshToken ? encryptToken(refreshToken) : null;
1913
1938
  const tokenHashValue = token ? hashToken(token) : null;
1914
1939
  const refreshTokenHashValue = refreshToken ? hashToken(refreshToken) : null;
1940
+ const parsedUA = parseUserAgent(userAgent);
1915
1941
  const session2 = await strapi2.documents(SESSION_UID).create({
1916
1942
  data: {
1917
1943
  user: userId,
@@ -1929,8 +1955,22 @@ var session$1 = ({ strapi: strapi2 }) => {
1929
1955
  // Encrypted Refresh Token
1930
1956
  refreshTokenHash: refreshTokenHashValue,
1931
1957
  // SHA-256 hash for fast lookup
1932
- sessionId
1958
+ sessionId,
1933
1959
  // Unique identifier
1960
+ // Device info from User-Agent
1961
+ deviceType: parsedUA.deviceType,
1962
+ browserName: parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName,
1963
+ osName: parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName,
1964
+ // Geolocation data (if available from Premium features)
1965
+ geoLocation: geoData ? JSON.stringify({
1966
+ country: geoData.country,
1967
+ country_code: geoData.country_code,
1968
+ country_flag: geoData.country_flag,
1969
+ city: geoData.city,
1970
+ region: geoData.region,
1971
+ timezone: geoData.timezone
1972
+ }) : null,
1973
+ securityScore: geoData?.securityScore || null
1934
1974
  }
1935
1975
  });
1936
1976
  log.info(`[SUCCESS] Session ${session2.documentId} (${sessionId}) created for user ${userId}`);
@@ -2012,6 +2052,14 @@ var session$1 = ({ strapi: strapi2 }) => {
2012
2052
  const deviceType = session2.deviceType || parsedUA.deviceType;
2013
2053
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
2014
2054
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
2055
+ let geoLocation = session2.geoLocation;
2056
+ if (typeof geoLocation === "string") {
2057
+ try {
2058
+ geoLocation = JSON.parse(geoLocation);
2059
+ } catch (e) {
2060
+ geoLocation = null;
2061
+ }
2062
+ }
2015
2063
  const {
2016
2064
  token,
2017
2065
  tokenHash,
@@ -2019,6 +2067,8 @@ var session$1 = ({ strapi: strapi2 }) => {
2019
2067
  refreshTokenHash,
2020
2068
  locale,
2021
2069
  publishedAt,
2070
+ geoLocation: _geo,
2071
+ // Remove raw geoLocation, we use parsed version
2022
2072
  ...safeSession
2023
2073
  } = session2;
2024
2074
  return {
@@ -2026,6 +2076,8 @@ var session$1 = ({ strapi: strapi2 }) => {
2026
2076
  deviceType,
2027
2077
  browserName,
2028
2078
  osName,
2079
+ geoLocation,
2080
+ // Parsed object or null
2029
2081
  isTrulyActive,
2030
2082
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
2031
2083
  };
@@ -2058,6 +2110,14 @@ var session$1 = ({ strapi: strapi2 }) => {
2058
2110
  const deviceType = session2.deviceType || parsedUA.deviceType;
2059
2111
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
2060
2112
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
2113
+ let geoLocation = session2.geoLocation;
2114
+ if (typeof geoLocation === "string") {
2115
+ try {
2116
+ geoLocation = JSON.parse(geoLocation);
2117
+ } catch (e) {
2118
+ geoLocation = null;
2119
+ }
2120
+ }
2061
2121
  const {
2062
2122
  token,
2063
2123
  tokenHash,
@@ -2065,6 +2125,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2065
2125
  refreshTokenHash,
2066
2126
  locale,
2067
2127
  publishedAt,
2128
+ geoLocation: _geo,
2068
2129
  ...safeSession
2069
2130
  } = session2;
2070
2131
  return {
@@ -2072,6 +2133,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2072
2133
  deviceType,
2073
2134
  browserName,
2074
2135
  osName,
2136
+ geoLocation,
2075
2137
  isTrulyActive,
2076
2138
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
2077
2139
  };
@@ -2112,6 +2174,14 @@ var session$1 = ({ strapi: strapi2 }) => {
2112
2174
  const deviceType = session2.deviceType || parsedUA.deviceType;
2113
2175
  const browserName = session2.browserName || (parsedUA.browserVersion ? `${parsedUA.browserName} ${parsedUA.browserVersion}` : parsedUA.browserName);
2114
2176
  const osName = session2.osName || (parsedUA.osVersion ? `${parsedUA.osName} ${parsedUA.osVersion}` : parsedUA.osName);
2177
+ let geoLocation = session2.geoLocation;
2178
+ if (typeof geoLocation === "string") {
2179
+ try {
2180
+ geoLocation = JSON.parse(geoLocation);
2181
+ } catch (e) {
2182
+ geoLocation = null;
2183
+ }
2184
+ }
2115
2185
  const {
2116
2186
  token,
2117
2187
  tokenHash,
@@ -2119,6 +2189,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2119
2189
  refreshTokenHash,
2120
2190
  locale,
2121
2191
  publishedAt,
2192
+ geoLocation: _geo,
2122
2193
  ...safeSession
2123
2194
  } = session2;
2124
2195
  return {
@@ -2126,6 +2197,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2126
2197
  deviceType,
2127
2198
  browserName,
2128
2199
  osName,
2200
+ geoLocation,
2129
2201
  isTrulyActive,
2130
2202
  minutesSinceActive: Math.floor(timeSinceActive / 1e3 / 60)
2131
2203
  };
@@ -2242,7 +2314,7 @@ var session$1 = ({ strapi: strapi2 }) => {
2242
2314
  }
2243
2315
  };
2244
2316
  };
2245
- const version = "4.2.10";
2317
+ const version = "4.2.11";
2246
2318
  const require$$2 = {
2247
2319
  version
2248
2320
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.2.11",
2
+ "version": "4.2.12",
3
3
  "keywords": [
4
4
  "strapi",
5
5
  "strapi-plugin",