@sonicjs-cms/core 2.16.1 → 2.17.0

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 (61) hide show
  1. package/dist/{app-D9L3mrC-.d.cts → app-C9esKLmh.d.cts} +2 -0
  2. package/dist/{app-D9L3mrC-.d.ts → app-C9esKLmh.d.ts} +2 -0
  3. package/dist/{chunk-U6FOL6EO.cjs → chunk-4HCUJ3MG.cjs} +34 -6
  4. package/dist/chunk-4HCUJ3MG.cjs.map +1 -0
  5. package/dist/{chunk-JF5RQXPN.js → chunk-6F57Z6SD.js} +3 -3
  6. package/dist/{chunk-JF5RQXPN.js.map → chunk-6F57Z6SD.js.map} +1 -1
  7. package/dist/{chunk-W33MHOPA.js → chunk-FDXNIZ6N.js} +34 -6
  8. package/dist/chunk-FDXNIZ6N.js.map +1 -0
  9. package/dist/{chunk-HU4MN74Q.cjs → chunk-FSWP4FBW.cjs} +2 -2
  10. package/dist/{chunk-HU4MN74Q.cjs.map → chunk-FSWP4FBW.cjs.map} +1 -1
  11. package/dist/{chunk-MZS33LLH.cjs → chunk-J5MYHM6Z.cjs} +352 -176
  12. package/dist/chunk-J5MYHM6Z.cjs.map +1 -0
  13. package/dist/{chunk-BAMJVG33.js → chunk-LZJLWW7E.js} +227 -51
  14. package/dist/chunk-LZJLWW7E.js.map +1 -0
  15. package/dist/{chunk-PUZMLXOJ.js → chunk-NMJT6BJR.js} +2 -2
  16. package/dist/{chunk-PUZMLXOJ.js.map → chunk-NMJT6BJR.js.map} +1 -1
  17. package/dist/{chunk-V76ERLX6.cjs → chunk-QBLBIAVZ.cjs} +3 -3
  18. package/dist/{chunk-V76ERLX6.cjs.map → chunk-QBLBIAVZ.cjs.map} +1 -1
  19. package/dist/{chunk-TBJY2FF7.js → chunk-QFWHAFEO.js} +22 -2
  20. package/dist/chunk-QFWHAFEO.js.map +1 -0
  21. package/dist/{chunk-7HHIZQNE.cjs → chunk-RE3NVA23.cjs} +155 -17
  22. package/dist/chunk-RE3NVA23.cjs.map +1 -0
  23. package/dist/{chunk-KYAF33AF.js → chunk-S7K4FRJ2.js} +149 -14
  24. package/dist/chunk-S7K4FRJ2.js.map +1 -0
  25. package/dist/{chunk-NZWFCUDA.cjs → chunk-WAEQXGCX.cjs} +22 -2
  26. package/dist/chunk-WAEQXGCX.cjs.map +1 -0
  27. package/dist/index.cjs +194 -186
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +1 -1
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.js +30 -22
  32. package/dist/index.js.map +1 -1
  33. package/dist/middleware.cjs +41 -29
  34. package/dist/middleware.d.cts +38 -4
  35. package/dist/middleware.d.ts +38 -4
  36. package/dist/middleware.js +3 -3
  37. package/dist/migrations-HQI62CAO.js +4 -0
  38. package/dist/{migrations-WCEBO5QQ.js.map → migrations-HQI62CAO.js.map} +1 -1
  39. package/dist/migrations-ZYPYVSXI.cjs +13 -0
  40. package/dist/{migrations-MYQI2KAJ.cjs.map → migrations-ZYPYVSXI.cjs.map} +1 -1
  41. package/dist/routes.cjs +29 -29
  42. package/dist/routes.d.cts +1 -1
  43. package/dist/routes.d.ts +1 -1
  44. package/dist/routes.js +6 -6
  45. package/dist/services.cjs +39 -39
  46. package/dist/services.d.cts +12 -0
  47. package/dist/services.d.ts +12 -0
  48. package/dist/services.js +3 -3
  49. package/dist/utils.cjs +11 -11
  50. package/dist/utils.js +1 -1
  51. package/package.json +1 -1
  52. package/dist/chunk-7HHIZQNE.cjs.map +0 -1
  53. package/dist/chunk-BAMJVG33.js.map +0 -1
  54. package/dist/chunk-KYAF33AF.js.map +0 -1
  55. package/dist/chunk-MZS33LLH.cjs.map +0 -1
  56. package/dist/chunk-NZWFCUDA.cjs.map +0 -1
  57. package/dist/chunk-TBJY2FF7.js.map +0 -1
  58. package/dist/chunk-U6FOL6EO.cjs.map +0 -1
  59. package/dist/chunk-W33MHOPA.js.map +0 -1
  60. package/dist/migrations-MYQI2KAJ.cjs +0 -13
  61. package/dist/migrations-WCEBO5QQ.js +0 -4
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-D9L3mrC-.cjs';
1
+ export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-C9esKLmh.cjs';
2
2
  import { B as schema } from './plugin-bootstrap-DfVerYV4.cjs';
3
3
  export { D as Collection, E as Content, C as CorePlugin, F as DbPlugin, G as DbPluginHook, L as LogCategory, H as LogConfig, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, I as Media, M as Migration, e as MigrationService, f as MigrationStatus, N as NewCollection, J as NewContent, K as NewLogConfig, O as NewMedia, Q as NewPlugin, R as NewPluginActivityLog, S as NewPluginAsset, T as NewPluginHook, U as NewPluginRoute, V as NewSystemLog, W as NewUser, X as NewWorkflowHistory, Y as PluginActivityLog, Z as PluginAsset, P as PluginBootstrapService, _ as PluginRoute, g as PluginServiceClass, $ as SystemLog, a0 as User, a1 as WorkflowHistory, a2 as apiTokens, h as backfillFormSubmissions, i as cleanupRemovedCollections, a3 as collections, a4 as content, a5 as contentVersions, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, a6 as insertCollectionSchema, a7 as insertContentSchema, a8 as insertLogConfigSchema, a9 as insertMediaSchema, aa as insertPluginActivityLogSchema, ab as insertPluginAssetSchema, ac as insertPluginHookSchema, ad as insertPluginRouteSchema, ae as insertPluginSchema, af as insertSystemLogSchema, ag as insertUserSchema, ah as insertWorkflowHistorySchema, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, ai as logConfig, u as mapFormStatusToContentStatus, aj as media, ak as pluginActivityLog, al as pluginAssets, am as pluginHooks, an as pluginRoutes, ao as plugins, v as registerCollections, ap as selectCollectionSchema, aq as selectContentSchema, ar as selectLogConfigSchema, as as selectMediaSchema, at as selectPluginActivityLogSchema, au as selectPluginAssetSchema, av as selectPluginHookSchema, aw as selectPluginRouteSchema, ax as selectPluginSchema, ay as selectSystemLogSchema, az as selectUserSchema, aA as selectWorkflowHistorySchema, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, aB as systemLogs, aC as users, A as validateCollectionConfig, aD as workflowHistory } from './plugin-bootstrap-DfVerYV4.cjs';
4
4
  export { AuthManager, Permission, PermissionManager, UserPermissions, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeaders, securityLoggingMiddleware } from './middleware.cjs';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-D9L3mrC-.js';
1
+ export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-C9esKLmh.js';
2
2
  import { B as schema } from './plugin-bootstrap-P_ciLp_C.js';
3
3
  export { D as Collection, E as Content, C as CorePlugin, F as DbPlugin, G as DbPluginHook, L as LogCategory, H as LogConfig, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, I as Media, M as Migration, e as MigrationService, f as MigrationStatus, N as NewCollection, J as NewContent, K as NewLogConfig, O as NewMedia, Q as NewPlugin, R as NewPluginActivityLog, S as NewPluginAsset, T as NewPluginHook, U as NewPluginRoute, V as NewSystemLog, W as NewUser, X as NewWorkflowHistory, Y as PluginActivityLog, Z as PluginAsset, P as PluginBootstrapService, _ as PluginRoute, g as PluginServiceClass, $ as SystemLog, a0 as User, a1 as WorkflowHistory, a2 as apiTokens, h as backfillFormSubmissions, i as cleanupRemovedCollections, a3 as collections, a4 as content, a5 as contentVersions, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, a6 as insertCollectionSchema, a7 as insertContentSchema, a8 as insertLogConfigSchema, a9 as insertMediaSchema, aa as insertPluginActivityLogSchema, ab as insertPluginAssetSchema, ac as insertPluginHookSchema, ad as insertPluginRouteSchema, ae as insertPluginSchema, af as insertSystemLogSchema, ag as insertUserSchema, ah as insertWorkflowHistorySchema, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, ai as logConfig, u as mapFormStatusToContentStatus, aj as media, ak as pluginActivityLog, al as pluginAssets, am as pluginHooks, an as pluginRoutes, ao as plugins, v as registerCollections, ap as selectCollectionSchema, aq as selectContentSchema, ar as selectLogConfigSchema, as as selectMediaSchema, at as selectPluginActivityLogSchema, au as selectPluginAssetSchema, av as selectPluginHookSchema, aw as selectPluginRouteSchema, ax as selectPluginSchema, ay as selectSystemLogSchema, az as selectUserSchema, aA as selectWorkflowHistorySchema, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, aB as systemLogs, aC as users, A as validateCollectionConfig, aD as workflowHistory } from './plugin-bootstrap-P_ciLp_C.js';
4
4
  export { AuthManager, Permission, PermissionManager, UserPermissions, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeaders, securityLoggingMiddleware } from './middleware.js';
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { renderConfirmationDialog, getConfirmationDialogScript, api_default, api_media_default, api_system_default, admin_api_default, router, adminCollectionsRoutes, adminFormsRoutes, adminSettingsRoutes, public_forms_default, router2, admin_content_default, adminMediaRoutes, userProfilesPlugin, adminPluginRoutes, adminLogsRoutes, userRoutes, auth_default, test_cleanup_default } from './chunk-BAMJVG33.js';
2
- export { ROUTES_INFO, admin_api_default as adminApiRoutes, adminCheckboxRoutes, admin_code_examples_default as adminCodeExamplesRoutes, adminCollectionsRoutes, admin_content_default as adminContentRoutes, router as adminDashboardRoutes, adminDesignRoutes, adminLogsRoutes, adminMediaRoutes, adminPluginRoutes, adminSettingsRoutes, admin_testimonials_default as adminTestimonialsRoutes, userRoutes as adminUsersRoutes, api_content_crud_default as apiContentCrudRoutes, api_media_default as apiMediaRoutes, api_default as apiRoutes, api_system_default as apiSystemRoutes, auth_default as authRoutes, createUserProfilesPlugin, defineUserProfile, getUserProfileConfig, userProfilesPlugin } from './chunk-BAMJVG33.js';
3
- import { SettingsService, setAppInstance, schema_exports } from './chunk-TBJY2FF7.js';
4
- export { Logger, apiTokens, collections, content, contentVersions, getLogger, initLogger, insertCollectionSchema, insertContentSchema, insertLogConfigSchema, insertMediaSchema, insertPluginActivityLogSchema, insertPluginAssetSchema, insertPluginHookSchema, insertPluginRouteSchema, insertPluginSchema, insertSystemLogSchema, insertUserSchema, insertWorkflowHistorySchema, logConfig, media, pluginActivityLog, pluginAssets, pluginHooks, pluginRoutes, plugins, selectCollectionSchema, selectContentSchema, selectLogConfigSchema, selectMediaSchema, selectPluginActivityLogSchema, selectPluginAssetSchema, selectPluginHookSchema, selectPluginRouteSchema, selectPluginSchema, selectSystemLogSchema, selectUserSchema, selectWorkflowHistorySchema, systemLogs, users, workflowHistory } from './chunk-TBJY2FF7.js';
5
- import { requireAuth, AuthManager, metricsMiddleware, bootstrapMiddleware, securityHeadersMiddleware, csrfProtection, requireRole } from './chunk-KYAF33AF.js';
6
- export { AuthManager, PermissionManager, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeadersMiddleware as securityHeaders, securityLoggingMiddleware } from './chunk-KYAF33AF.js';
7
- import { PluginService, PLUGIN_REGISTRY } from './chunk-W33MHOPA.js';
8
- export { PluginBootstrapService, PluginService as PluginServiceClass, backfillFormSubmissions, cleanupRemovedCollections, createContentFromSubmission, deriveCollectionSchemaFromFormio, deriveSubmissionTitle, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, mapFormStatusToContentStatus, registerCollections, syncAllFormCollections, syncCollection, syncCollections, syncFormCollection, validateCollectionConfig } from './chunk-W33MHOPA.js';
9
- export { MigrationService } from './chunk-PUZMLXOJ.js';
1
+ import { renderConfirmationDialog, getConfirmationDialogScript, api_default, api_media_default, api_system_default, admin_api_default, router, adminCollectionsRoutes, adminFormsRoutes, adminSettingsRoutes, public_forms_default, router2, admin_content_default, adminMediaRoutes, userProfilesPlugin, adminPluginRoutes, adminLogsRoutes, userRoutes, auth_default, test_cleanup_default } from './chunk-LZJLWW7E.js';
2
+ export { ROUTES_INFO, admin_api_default as adminApiRoutes, adminCheckboxRoutes, admin_code_examples_default as adminCodeExamplesRoutes, adminCollectionsRoutes, admin_content_default as adminContentRoutes, router as adminDashboardRoutes, adminDesignRoutes, adminLogsRoutes, adminMediaRoutes, adminPluginRoutes, adminSettingsRoutes, admin_testimonials_default as adminTestimonialsRoutes, userRoutes as adminUsersRoutes, api_content_crud_default as apiContentCrudRoutes, api_media_default as apiMediaRoutes, api_default as apiRoutes, api_system_default as apiSystemRoutes, auth_default as authRoutes, createUserProfilesPlugin, defineUserProfile, getUserProfileConfig, userProfilesPlugin } from './chunk-LZJLWW7E.js';
3
+ import { SettingsService, setAppInstance, schema_exports } from './chunk-QFWHAFEO.js';
4
+ export { Logger, apiTokens, collections, content, contentVersions, getLogger, initLogger, insertCollectionSchema, insertContentSchema, insertLogConfigSchema, insertMediaSchema, insertPluginActivityLogSchema, insertPluginAssetSchema, insertPluginHookSchema, insertPluginRouteSchema, insertPluginSchema, insertSystemLogSchema, insertUserSchema, insertWorkflowHistorySchema, logConfig, media, pluginActivityLog, pluginAssets, pluginHooks, pluginRoutes, plugins, selectCollectionSchema, selectContentSchema, selectLogConfigSchema, selectMediaSchema, selectPluginActivityLogSchema, selectPluginAssetSchema, selectPluginHookSchema, selectPluginRouteSchema, selectPluginSchema, selectSystemLogSchema, selectUserSchema, selectWorkflowHistorySchema, systemLogs, users, workflowHistory } from './chunk-QFWHAFEO.js';
5
+ import { requireAuth, getJwtExpirySecondsFromDb, AuthManager, metricsMiddleware, bootstrapMiddleware, securityHeadersMiddleware, csrfProtection, requireRole } from './chunk-S7K4FRJ2.js';
6
+ export { AuthManager, PermissionManager, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeadersMiddleware as securityHeaders, securityLoggingMiddleware } from './chunk-S7K4FRJ2.js';
7
+ import { PluginService, PLUGIN_REGISTRY } from './chunk-FDXNIZ6N.js';
8
+ export { PluginBootstrapService, PluginService as PluginServiceClass, backfillFormSubmissions, cleanupRemovedCollections, createContentFromSubmission, deriveCollectionSchemaFromFormio, deriveSubmissionTitle, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, mapFormStatusToContentStatus, registerCollections, syncAllFormCollections, syncCollection, syncCollections, syncFormCollection, validateCollectionConfig } from './chunk-FDXNIZ6N.js';
9
+ export { MigrationService } from './chunk-NMJT6BJR.js';
10
10
  export { renderFilterBar } from './chunk-ON5ZMSU4.js';
11
11
  import { renderAdminLayout } from './chunk-XWIA3HVX.js';
12
12
  export { getConfirmationDialogScript, renderAlert, renderConfirmationDialog, renderForm, renderFormField, renderPagination, renderTable } from './chunk-XWIA3HVX.js';
@@ -14,8 +14,8 @@ import { init_admin_layout_catalyst_template, renderAdminLayoutCatalyst } from '
14
14
  export { HookSystemImpl, HookUtils, PluginManager as PluginManagerClass, PluginRegistryImpl, PluginValidator as PluginValidatorClass, ScopedHookSystem as ScopedHookSystemClass } from './chunk-TFNTM3OA.js';
15
15
  import { PluginBuilder, PluginHelpers } from './chunk-EXNEW5US.js';
16
16
  export { PluginBuilder, PluginHelpers } from './chunk-EXNEW5US.js';
17
- import { package_default, getCoreVersion } from './chunk-JF5RQXPN.js';
18
- export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, getCoreVersion, renderTemplate, templateRenderer } from './chunk-JF5RQXPN.js';
17
+ import { package_default, getCoreVersion } from './chunk-6F57Z6SD.js';
18
+ export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, getCoreVersion, renderTemplate, templateRenderer } from './chunk-6F57Z6SD.js';
19
19
  import './chunk-X7ZAEI5S.js';
20
20
  export { metricsTracker } from './chunk-FICTAGD4.js';
21
21
  export { escapeHtml, sanitizeInput, sanitizeObject } from './chunk-TQABQWOP.js';
@@ -1944,13 +1944,13 @@ function createOTPLoginPlugin() {
1944
1944
  error: "Account is deactivated"
1945
1945
  }, 403);
1946
1946
  }
1947
- const token = await AuthManager.generateToken(user.id, user.email, user.role, c.env.JWT_SECRET);
1947
+ const tokenTtl = await getJwtExpirySecondsFromDb(db, c.env);
1948
+ const token = await AuthManager.generateToken(user.id, user.email, user.role, c.env.JWT_SECRET, tokenTtl);
1948
1949
  setCookie(c, "auth_token", token, {
1949
1950
  httpOnly: true,
1950
1951
  secure: true,
1951
1952
  sameSite: "Strict",
1952
- maxAge: 60 * 60 * 24
1953
- // 24 hours
1953
+ maxAge: tokenTtl
1954
1954
  });
1955
1955
  return c.json({
1956
1956
  success: true,
@@ -2414,13 +2414,15 @@ function createOAuthProvidersPlugin() {
2414
2414
  if (!user || !user.is_active) {
2415
2415
  return c.redirect("/auth/login?error=Account is deactivated");
2416
2416
  }
2417
+ const tokenTtl2 = await getJwtExpirySecondsFromDb(c.env.DB, c.env);
2417
2418
  const jwt2 = await AuthManager.generateToken(
2418
2419
  user.id,
2419
2420
  user.email,
2420
2421
  user.role,
2421
- c.env.JWT_SECRET
2422
+ c.env.JWT_SECRET,
2423
+ tokenTtl2
2422
2424
  );
2423
- AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax" });
2425
+ AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax", maxAge: tokenTtl2 });
2424
2426
  return c.redirect("/admin");
2425
2427
  }
2426
2428
  const existingUser = await oauthService.findUserByEmail(profile.email);
@@ -2437,13 +2439,15 @@ function createOAuthProvidersPlugin() {
2437
2439
  tokenExpiresAt: tokenExpiresAt ?? void 0,
2438
2440
  profileData: JSON.stringify(profile)
2439
2441
  });
2442
+ const tokenTtl2 = await getJwtExpirySecondsFromDb(c.env.DB, c.env);
2440
2443
  const jwt2 = await AuthManager.generateToken(
2441
2444
  existingUser.id,
2442
2445
  existingUser.email,
2443
2446
  existingUser.role,
2444
- c.env.JWT_SECRET
2447
+ c.env.JWT_SECRET,
2448
+ tokenTtl2
2445
2449
  );
2446
- AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax" });
2450
+ AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax", maxAge: tokenTtl2 });
2447
2451
  return c.redirect("/admin");
2448
2452
  }
2449
2453
  const newUserId = await oauthService.createUserFromOAuth(profile);
@@ -2456,13 +2460,15 @@ function createOAuthProvidersPlugin() {
2456
2460
  tokenExpiresAt: tokenExpiresAt ?? void 0,
2457
2461
  profileData: JSON.stringify(profile)
2458
2462
  });
2463
+ const tokenTtl = await getJwtExpirySecondsFromDb(c.env.DB, c.env);
2459
2464
  const jwt = await AuthManager.generateToken(
2460
2465
  newUserId,
2461
2466
  profile.email.toLowerCase(),
2462
2467
  "viewer",
2463
- c.env.JWT_SECRET
2468
+ c.env.JWT_SECRET,
2469
+ tokenTtl
2464
2470
  );
2465
- AuthManager.setAuthCookie(c, jwt, { sameSite: "Lax" });
2471
+ AuthManager.setAuthCookie(c, jwt, { sameSite: "Lax", maxAge: tokenTtl });
2466
2472
  return c.redirect("/admin");
2467
2473
  } catch (error) {
2468
2474
  console.error("OAuth callback error:", error);
@@ -4556,13 +4562,15 @@ function createMagicLinkAuthPlugin() {
4556
4562
  SET used = 1, used_at = ?
4557
4563
  WHERE id = ?
4558
4564
  `).bind(Date.now(), magicLink.id).run();
4565
+ const tokenTtl = await getJwtExpirySecondsFromDb(c.env.DB, c.env);
4559
4566
  const jwtToken = await AuthManager.generateToken(
4560
4567
  user.id,
4561
4568
  user.email,
4562
4569
  user.role,
4563
- c.env.JWT_SECRET
4570
+ c.env.JWT_SECRET,
4571
+ tokenTtl
4564
4572
  );
4565
- AuthManager.setAuthCookie(c, jwtToken);
4573
+ AuthManager.setAuthCookie(c, jwtToken, { maxAge: tokenTtl });
4566
4574
  await db.prepare(`
4567
4575
  UPDATE users SET last_login_at = ? WHERE id = ?
4568
4576
  `).bind(Date.now(), user.id).run();