@payez/next-mvp 3.9.1 → 4.0.1

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 (526) hide show
  1. package/package.json +6 -18
  2. package/src/api/auth-handler.ts +550 -549
  3. package/src/api-handlers/account/change-password.ts +5 -8
  4. package/src/api-handlers/admin/analytics.ts +4 -6
  5. package/src/api-handlers/admin/audit.ts +5 -7
  6. package/src/api-handlers/admin/index.ts +1 -2
  7. package/src/api-handlers/admin/redis-sessions.ts +6 -8
  8. package/src/api-handlers/admin/sessions.ts +5 -7
  9. package/src/api-handlers/admin/site-logs.ts +8 -10
  10. package/src/api-handlers/admin/stats.ts +4 -6
  11. package/src/api-handlers/admin/users.ts +5 -7
  12. package/src/api-handlers/admin/vibe-data.ts +10 -12
  13. package/src/api-handlers/auth/refresh.ts +5 -7
  14. package/src/api-handlers/auth/signout.ts +5 -6
  15. package/src/api-handlers/auth/status.ts +4 -7
  16. package/src/api-handlers/auth/update-session.ts +123 -125
  17. package/src/api-handlers/auth/verify-code.ts +9 -13
  18. package/src/api-handlers/session/viability.ts +10 -47
  19. package/src/api-handlers/test/force-expire.ts +4 -11
  20. package/src/auth/auth-decision.ts +1 -1
  21. package/src/auth/better-auth.ts +138 -141
  22. package/src/auth/route-config.ts +219 -219
  23. package/src/auth/utils/token-utils.ts +0 -1
  24. package/src/client/AuthContext.tsx +6 -2
  25. package/src/client/fetch-with-auth.ts +47 -47
  26. package/src/components/SessionSync.tsx +6 -5
  27. package/src/components/account/MobileNavDrawer.tsx +3 -3
  28. package/src/components/account/UserAvatarMenu.tsx +6 -3
  29. package/src/components/admin/VibeAdminLayout.tsx +4 -2
  30. package/src/config/logger.ts +1 -1
  31. package/src/hooks/useAuth.ts +117 -115
  32. package/src/hooks/useAuthSettings.ts +2 -2
  33. package/src/hooks/useAvailableProviders.ts +9 -5
  34. package/src/hooks/useSessionExpiration.ts +101 -102
  35. package/src/hooks/useViabilitySession.ts +336 -335
  36. package/src/index.ts +60 -63
  37. package/src/lib/api-handler.ts +0 -1
  38. package/src/lib/app-slug.ts +6 -6
  39. package/src/lib/standardized-client-api.ts +901 -895
  40. package/src/lib/startup-init.ts +243 -247
  41. package/src/lib/test-aware-get-token.ts +22 -12
  42. package/src/lib/token-lifecycle.ts +12 -53
  43. package/src/pages/admin-login/page.tsx +9 -17
  44. package/src/pages/client-admin/ClientSiteAdminPage.tsx +4 -2
  45. package/src/pages/login/page.tsx +21 -28
  46. package/src/pages/showcase/ShowcasePage.tsx +4 -2
  47. package/src/pages/test-env/EmergencyLogoutPage.tsx +7 -6
  48. package/src/pages/test-env/JwtInspectPage.tsx +5 -3
  49. package/src/pages/test-env/RefreshTokenPage.tsx +157 -155
  50. package/src/pages/test-env/TestEnvPage.tsx +4 -2
  51. package/src/pages/verify-code/page.tsx +10 -6
  52. package/src/routes/auth/logout.ts +7 -25
  53. package/src/routes/auth/nextauth.ts +45 -71
  54. package/src/routes/auth/session.ts +25 -50
  55. package/src/routes/auth/viability.ts +7 -19
  56. package/src/server/auth.ts +60 -0
  57. package/src/stores/authStore.ts +1899 -1904
  58. package/src/utils/logout.ts +30 -30
  59. package/dist/api/auth-handler.d.ts +0 -67
  60. package/dist/api/auth-handler.js +0 -397
  61. package/dist/api/index.d.ts +0 -10
  62. package/dist/api/index.js +0 -19
  63. package/dist/api-handlers/account/change-password.d.ts +0 -9
  64. package/dist/api-handlers/account/change-password.js +0 -112
  65. package/dist/api-handlers/account/masked-info.d.ts +0 -2
  66. package/dist/api-handlers/account/masked-info.js +0 -41
  67. package/dist/api-handlers/account/profile.d.ts +0 -3
  68. package/dist/api-handlers/account/profile.js +0 -63
  69. package/dist/api-handlers/account/recovery/initiate.d.ts +0 -2
  70. package/dist/api-handlers/account/recovery/initiate.js +0 -26
  71. package/dist/api-handlers/account/recovery/send-code.d.ts +0 -2
  72. package/dist/api-handlers/account/recovery/send-code.js +0 -28
  73. package/dist/api-handlers/account/recovery/verify-code.d.ts +0 -2
  74. package/dist/api-handlers/account/recovery/verify-code.js +0 -28
  75. package/dist/api-handlers/account/reset-password.d.ts +0 -2
  76. package/dist/api-handlers/account/reset-password.js +0 -26
  77. package/dist/api-handlers/account/send-code.d.ts +0 -24
  78. package/dist/api-handlers/account/send-code.js +0 -60
  79. package/dist/api-handlers/account/update-phone.d.ts +0 -27
  80. package/dist/api-handlers/account/update-phone.js +0 -64
  81. package/dist/api-handlers/account/validate-password.d.ts +0 -17
  82. package/dist/api-handlers/account/validate-password.js +0 -81
  83. package/dist/api-handlers/account/verify-email.d.ts +0 -26
  84. package/dist/api-handlers/account/verify-email.js +0 -106
  85. package/dist/api-handlers/account/verify-sms.d.ts +0 -26
  86. package/dist/api-handlers/account/verify-sms.js +0 -106
  87. package/dist/api-handlers/admin/analytics.d.ts +0 -20
  88. package/dist/api-handlers/admin/analytics.js +0 -379
  89. package/dist/api-handlers/admin/audit.d.ts +0 -20
  90. package/dist/api-handlers/admin/audit.js +0 -214
  91. package/dist/api-handlers/admin/index.d.ts +0 -22
  92. package/dist/api-handlers/admin/index.js +0 -43
  93. package/dist/api-handlers/admin/redis-sessions.d.ts +0 -36
  94. package/dist/api-handlers/admin/redis-sessions.js +0 -204
  95. package/dist/api-handlers/admin/sessions.d.ts +0 -21
  96. package/dist/api-handlers/admin/sessions.js +0 -284
  97. package/dist/api-handlers/admin/site-logs.d.ts +0 -46
  98. package/dist/api-handlers/admin/site-logs.js +0 -318
  99. package/dist/api-handlers/admin/stats.d.ts +0 -21
  100. package/dist/api-handlers/admin/stats.js +0 -240
  101. package/dist/api-handlers/admin/users.d.ts +0 -20
  102. package/dist/api-handlers/admin/users.js +0 -222
  103. package/dist/api-handlers/admin/vibe-data.d.ts +0 -80
  104. package/dist/api-handlers/admin/vibe-data.js +0 -268
  105. package/dist/api-handlers/anon/preferences.d.ts +0 -37
  106. package/dist/api-handlers/anon/preferences.js +0 -96
  107. package/dist/api-handlers/auth/jwks.d.ts +0 -2
  108. package/dist/api-handlers/auth/jwks.js +0 -24
  109. package/dist/api-handlers/auth/login.d.ts +0 -42
  110. package/dist/api-handlers/auth/login.js +0 -178
  111. package/dist/api-handlers/auth/refresh.d.ts +0 -74
  112. package/dist/api-handlers/auth/refresh.js +0 -635
  113. package/dist/api-handlers/auth/signout.d.ts +0 -37
  114. package/dist/api-handlers/auth/signout.js +0 -187
  115. package/dist/api-handlers/auth/status.d.ts +0 -8
  116. package/dist/api-handlers/auth/status.js +0 -26
  117. package/dist/api-handlers/auth/update-session.d.ts +0 -37
  118. package/dist/api-handlers/auth/update-session.js +0 -95
  119. package/dist/api-handlers/auth/validate.d.ts +0 -6
  120. package/dist/api-handlers/auth/validate.js +0 -43
  121. package/dist/api-handlers/auth/verify-code.d.ts +0 -43
  122. package/dist/api-handlers/auth/verify-code.js +0 -94
  123. package/dist/api-handlers/session/refresh-viability.d.ts +0 -14
  124. package/dist/api-handlers/session/refresh-viability.js +0 -39
  125. package/dist/api-handlers/session/viability.d.ts +0 -13
  126. package/dist/api-handlers/session/viability.js +0 -146
  127. package/dist/api-handlers/test/force-expire.d.ts +0 -23
  128. package/dist/api-handlers/test/force-expire.js +0 -65
  129. package/dist/auth/auth-decision.d.ts +0 -39
  130. package/dist/auth/auth-decision.js +0 -182
  131. package/dist/auth/auth-options.d.ts +0 -57
  132. package/dist/auth/auth-options.js +0 -213
  133. package/dist/auth/better-auth.d.ts +0 -82
  134. package/dist/auth/better-auth.js +0 -122
  135. package/dist/auth/callbacks/index.d.ts +0 -6
  136. package/dist/auth/callbacks/index.js +0 -12
  137. package/dist/auth/callbacks/jwt.d.ts +0 -45
  138. package/dist/auth/callbacks/jwt.js +0 -305
  139. package/dist/auth/callbacks/session.d.ts +0 -60
  140. package/dist/auth/callbacks/session.js +0 -170
  141. package/dist/auth/callbacks/signin.d.ts +0 -23
  142. package/dist/auth/callbacks/signin.js +0 -44
  143. package/dist/auth/events/index.d.ts +0 -4
  144. package/dist/auth/events/index.js +0 -8
  145. package/dist/auth/events/signout.d.ts +0 -17
  146. package/dist/auth/events/signout.js +0 -32
  147. package/dist/auth/providers/credentials.d.ts +0 -32
  148. package/dist/auth/providers/credentials.js +0 -223
  149. package/dist/auth/providers/index.d.ts +0 -5
  150. package/dist/auth/providers/index.js +0 -21
  151. package/dist/auth/providers/oauth.d.ts +0 -26
  152. package/dist/auth/providers/oauth.js +0 -105
  153. package/dist/auth/route-config.d.ts +0 -66
  154. package/dist/auth/route-config.js +0 -190
  155. package/dist/auth/types/auth-types.d.ts +0 -417
  156. package/dist/auth/types/auth-types.js +0 -53
  157. package/dist/auth/types/index.d.ts +0 -6
  158. package/dist/auth/types/index.js +0 -22
  159. package/dist/auth/unauthenticated-routes.d.ts +0 -1
  160. package/dist/auth/unauthenticated-routes.js +0 -19
  161. package/dist/auth/utils/idp-client.d.ts +0 -94
  162. package/dist/auth/utils/idp-client.js +0 -384
  163. package/dist/auth/utils/index.d.ts +0 -5
  164. package/dist/auth/utils/index.js +0 -21
  165. package/dist/auth/utils/token-utils.d.ts +0 -84
  166. package/dist/auth/utils/token-utils.js +0 -219
  167. package/dist/client/AuthContext.d.ts +0 -19
  168. package/dist/client/AuthContext.js +0 -112
  169. package/dist/client/better-auth-client.d.ts +0 -1020
  170. package/dist/client/better-auth-client.js +0 -68
  171. package/dist/client/fetch-with-auth.d.ts +0 -11
  172. package/dist/client/fetch-with-auth.js +0 -44
  173. package/dist/client/fetchWithSession.d.ts +0 -3
  174. package/dist/client/fetchWithSession.js +0 -24
  175. package/dist/client/index.d.ts +0 -9
  176. package/dist/client/index.js +0 -20
  177. package/dist/client/useAnonSession.d.ts +0 -36
  178. package/dist/client/useAnonSession.js +0 -99
  179. package/dist/components/SessionSync.d.ts +0 -13
  180. package/dist/components/SessionSync.js +0 -119
  181. package/dist/components/SignalRHealthCheck.d.ts +0 -10
  182. package/dist/components/SignalRHealthCheck.js +0 -97
  183. package/dist/components/account/MobileNavDrawer.d.ts +0 -32
  184. package/dist/components/account/MobileNavDrawer.js +0 -81
  185. package/dist/components/account/UserAvatarMenu.d.ts +0 -20
  186. package/dist/components/account/UserAvatarMenu.js +0 -88
  187. package/dist/components/account/index.d.ts +0 -9
  188. package/dist/components/account/index.js +0 -13
  189. package/dist/components/admin/AlertSettingsTab.d.ts +0 -48
  190. package/dist/components/admin/AlertSettingsTab.js +0 -351
  191. package/dist/components/admin/AnalyticsTab.d.ts +0 -22
  192. package/dist/components/admin/AnalyticsTab.js +0 -167
  193. package/dist/components/admin/DataBrowserTab.d.ts +0 -19
  194. package/dist/components/admin/DataBrowserTab.js +0 -252
  195. package/dist/components/admin/LoggingSettingsTab.d.ts +0 -73
  196. package/dist/components/admin/LoggingSettingsTab.js +0 -339
  197. package/dist/components/admin/SessionsTab.d.ts +0 -37
  198. package/dist/components/admin/SessionsTab.js +0 -165
  199. package/dist/components/admin/StatsTab.d.ts +0 -53
  200. package/dist/components/admin/StatsTab.js +0 -161
  201. package/dist/components/admin/VibeAdminContext.d.ts +0 -32
  202. package/dist/components/admin/VibeAdminContext.js +0 -38
  203. package/dist/components/admin/VibeAdminLayout.d.ts +0 -11
  204. package/dist/components/admin/VibeAdminLayout.js +0 -69
  205. package/dist/components/admin/index.d.ts +0 -29
  206. package/dist/components/admin/index.js +0 -44
  207. package/dist/components/auth/FederatedAuthSection.d.ts +0 -8
  208. package/dist/components/auth/FederatedAuthSection.js +0 -45
  209. package/dist/components/auth/ModeAwareLoginPage.d.ts +0 -10
  210. package/dist/components/auth/ModeAwareLoginPage.js +0 -42
  211. package/dist/components/auth/ModeAwareSignupPage.d.ts +0 -9
  212. package/dist/components/auth/ModeAwareSignupPage.js +0 -78
  213. package/dist/components/auth/TraditionalAuthSection.d.ts +0 -14
  214. package/dist/components/auth/TraditionalAuthSection.js +0 -20
  215. package/dist/components/recovery/CompleteStep.d.ts +0 -5
  216. package/dist/components/recovery/CompleteStep.js +0 -8
  217. package/dist/components/recovery/InitiateRecoveryStep.d.ts +0 -8
  218. package/dist/components/recovery/InitiateRecoveryStep.js +0 -20
  219. package/dist/components/recovery/SelectMethodStep.d.ts +0 -8
  220. package/dist/components/recovery/SelectMethodStep.js +0 -8
  221. package/dist/components/recovery/SetPasswordStep.d.ts +0 -6
  222. package/dist/components/recovery/SetPasswordStep.js +0 -20
  223. package/dist/components/recovery/VerifyCodeStep.d.ts +0 -10
  224. package/dist/components/recovery/VerifyCodeStep.js +0 -24
  225. package/dist/components/reserved/ReservedRecoveryWarning.d.ts +0 -38
  226. package/dist/components/reserved/ReservedRecoveryWarning.js +0 -92
  227. package/dist/components/reserved/ReservedStatusBox.d.ts +0 -30
  228. package/dist/components/reserved/ReservedStatusBox.js +0 -71
  229. package/dist/components/ui/BetaBadge.d.ts +0 -29
  230. package/dist/components/ui/BetaBadge.js +0 -38
  231. package/dist/components/ui/Footer.d.ts +0 -37
  232. package/dist/components/ui/Footer.js +0 -41
  233. package/dist/config/env.d.ts +0 -66
  234. package/dist/config/env.js +0 -57
  235. package/dist/config/logger.d.ts +0 -57
  236. package/dist/config/logger.js +0 -73
  237. package/dist/config/logging-config.d.ts +0 -30
  238. package/dist/config/logging-config.js +0 -122
  239. package/dist/config/unauthenticated-routes.d.ts +0 -17
  240. package/dist/config/unauthenticated-routes.js +0 -24
  241. package/dist/config/vibe-log-transport.d.ts +0 -81
  242. package/dist/config/vibe-log-transport.js +0 -212
  243. package/dist/edge/internal-api-url.d.ts +0 -53
  244. package/dist/edge/internal-api-url.js +0 -63
  245. package/dist/edge/middleware.d.ts +0 -14
  246. package/dist/edge/middleware.js +0 -32
  247. package/dist/hooks/useAuth.d.ts +0 -23
  248. package/dist/hooks/useAuth.js +0 -81
  249. package/dist/hooks/useAuthSettings.d.ts +0 -59
  250. package/dist/hooks/useAuthSettings.js +0 -93
  251. package/dist/hooks/useAvailableProviders.d.ts +0 -45
  252. package/dist/hooks/useAvailableProviders.js +0 -108
  253. package/dist/hooks/usePasswordValidation.d.ts +0 -27
  254. package/dist/hooks/usePasswordValidation.js +0 -102
  255. package/dist/hooks/useProfile.d.ts +0 -15
  256. package/dist/hooks/useProfile.js +0 -59
  257. package/dist/hooks/usePublicAuthSettings.d.ts +0 -56
  258. package/dist/hooks/usePublicAuthSettings.js +0 -131
  259. package/dist/hooks/useSessionExpiration.d.ts +0 -57
  260. package/dist/hooks/useSessionExpiration.js +0 -72
  261. package/dist/hooks/useViabilitySession.d.ts +0 -75
  262. package/dist/hooks/useViabilitySession.js +0 -268
  263. package/dist/index.d.ts +0 -12
  264. package/dist/index.js +0 -55
  265. package/dist/lib/anon-session.d.ts +0 -74
  266. package/dist/lib/anon-session.js +0 -169
  267. package/dist/lib/api-handler.d.ts +0 -123
  268. package/dist/lib/api-handler.js +0 -478
  269. package/dist/lib/app-slug.d.ts +0 -95
  270. package/dist/lib/app-slug.js +0 -172
  271. package/dist/lib/demo-mode.d.ts +0 -6
  272. package/dist/lib/demo-mode.js +0 -16
  273. package/dist/lib/geolocation.d.ts +0 -64
  274. package/dist/lib/geolocation.js +0 -235
  275. package/dist/lib/idp-client-config.d.ts +0 -75
  276. package/dist/lib/idp-client-config.js +0 -425
  277. package/dist/lib/idp-fetch.d.ts +0 -14
  278. package/dist/lib/idp-fetch.js +0 -91
  279. package/dist/lib/internal-api.d.ts +0 -87
  280. package/dist/lib/internal-api.js +0 -122
  281. package/dist/lib/jwt-decode-client.d.ts +0 -10
  282. package/dist/lib/jwt-decode-client.js +0 -46
  283. package/dist/lib/jwt-decode.d.ts +0 -48
  284. package/dist/lib/jwt-decode.js +0 -57
  285. package/dist/lib/nextauth-secret.d.ts +0 -10
  286. package/dist/lib/nextauth-secret.js +0 -100
  287. package/dist/lib/rate-limit-service.d.ts +0 -23
  288. package/dist/lib/rate-limit-service.js +0 -6
  289. package/dist/lib/redis.d.ts +0 -5
  290. package/dist/lib/redis.js +0 -28
  291. package/dist/lib/refresh-token-validator.d.ts +0 -13
  292. package/dist/lib/refresh-token-validator.js +0 -117
  293. package/dist/lib/roles.d.ts +0 -145
  294. package/dist/lib/roles.js +0 -168
  295. package/dist/lib/secret-validation.d.ts +0 -4
  296. package/dist/lib/secret-validation.js +0 -14
  297. package/dist/lib/session-store.d.ts +0 -170
  298. package/dist/lib/session-store.js +0 -545
  299. package/dist/lib/session.d.ts +0 -21
  300. package/dist/lib/session.js +0 -26
  301. package/dist/lib/site-logger.d.ts +0 -214
  302. package/dist/lib/site-logger.js +0 -210
  303. package/dist/lib/standardized-client-api.d.ts +0 -161
  304. package/dist/lib/standardized-client-api.js +0 -786
  305. package/dist/lib/startup-init.d.ts +0 -40
  306. package/dist/lib/startup-init.js +0 -261
  307. package/dist/lib/test-aware-get-token.d.ts +0 -2
  308. package/dist/lib/test-aware-get-token.js +0 -81
  309. package/dist/lib/token-expiry.d.ts +0 -14
  310. package/dist/lib/token-expiry.js +0 -39
  311. package/dist/lib/token-lifecycle.d.ts +0 -52
  312. package/dist/lib/token-lifecycle.js +0 -398
  313. package/dist/lib/types/api-responses.d.ts +0 -128
  314. package/dist/lib/types/api-responses.js +0 -171
  315. package/dist/lib/user-agent-parser.d.ts +0 -50
  316. package/dist/lib/user-agent-parser.js +0 -220
  317. package/dist/logging/api/admin-analytics.d.ts +0 -3
  318. package/dist/logging/api/admin-analytics.js +0 -45
  319. package/dist/logging/api/audit-log.d.ts +0 -3
  320. package/dist/logging/api/audit-log.js +0 -52
  321. package/dist/logging/components/AdminAnalyticsLayout.d.ts +0 -10
  322. package/dist/logging/components/AdminAnalyticsLayout.js +0 -11
  323. package/dist/logging/components/AuditLogViewer.d.ts +0 -7
  324. package/dist/logging/components/AuditLogViewer.js +0 -51
  325. package/dist/logging/components/ErrorMetricsCard.d.ts +0 -7
  326. package/dist/logging/components/ErrorMetricsCard.js +0 -16
  327. package/dist/logging/components/HealthMetricsCard.d.ts +0 -7
  328. package/dist/logging/components/HealthMetricsCard.js +0 -19
  329. package/dist/logging/hooks/useAdminAnalytics.d.ts +0 -24
  330. package/dist/logging/hooks/useAdminAnalytics.js +0 -22
  331. package/dist/logging/hooks/useAuditLog.d.ts +0 -6
  332. package/dist/logging/hooks/useAuditLog.js +0 -25
  333. package/dist/logging/hooks/useErrorMetrics.d.ts +0 -6
  334. package/dist/logging/hooks/useErrorMetrics.js +0 -38
  335. package/dist/logging/hooks/useHealthMetrics.d.ts +0 -6
  336. package/dist/logging/hooks/useHealthMetrics.js +0 -41
  337. package/dist/logging/index.d.ts +0 -11
  338. package/dist/logging/index.js +0 -40
  339. package/dist/logging/types/analytics.d.ts +0 -68
  340. package/dist/logging/types/analytics.js +0 -3
  341. package/dist/logging/types/audit.d.ts +0 -29
  342. package/dist/logging/types/audit.js +0 -2
  343. package/dist/logging/types/index.d.ts +0 -2
  344. package/dist/logging/types/index.js +0 -19
  345. package/dist/middleware/auth-decision.d.ts +0 -33
  346. package/dist/middleware/auth-decision.js +0 -65
  347. package/dist/middleware/create-middleware.d.ts +0 -102
  348. package/dist/middleware/create-middleware.js +0 -469
  349. package/dist/middleware/rbac-check.d.ts +0 -51
  350. package/dist/middleware/rbac-check.js +0 -219
  351. package/dist/middleware/twofa-presets.d.ts +0 -134
  352. package/dist/middleware/twofa-presets.js +0 -175
  353. package/dist/models/DecodedAccessToken.d.ts +0 -17
  354. package/dist/models/DecodedAccessToken.js +0 -2
  355. package/dist/models/SessionModel.d.ts +0 -122
  356. package/dist/models/SessionModel.js +0 -136
  357. package/dist/pages/admin-login/page.d.ts +0 -31
  358. package/dist/pages/admin-login/page.js +0 -83
  359. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.d.ts +0 -18
  360. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.js +0 -276
  361. package/dist/pages/admin-page-permissions/index.d.ts +0 -6
  362. package/dist/pages/admin-page-permissions/index.js +0 -13
  363. package/dist/pages/admin-roles/RolesAdminPage.d.ts +0 -16
  364. package/dist/pages/admin-roles/RolesAdminPage.js +0 -261
  365. package/dist/pages/admin-roles/index.d.ts +0 -8
  366. package/dist/pages/admin-roles/index.js +0 -15
  367. package/dist/pages/admin-roles/modals.d.ts +0 -72
  368. package/dist/pages/admin-roles/modals.js +0 -154
  369. package/dist/pages/client-admin/ClientSiteAdminPage.d.ts +0 -79
  370. package/dist/pages/client-admin/ClientSiteAdminPage.js +0 -177
  371. package/dist/pages/client-admin/index.d.ts +0 -32
  372. package/dist/pages/client-admin/index.js +0 -37
  373. package/dist/pages/coming-soon/page.d.ts +0 -8
  374. package/dist/pages/coming-soon/page.js +0 -28
  375. package/dist/pages/login/page.d.ts +0 -22
  376. package/dist/pages/login/page.js +0 -239
  377. package/dist/pages/profile/EnhancedProfilePage.d.ts +0 -13
  378. package/dist/pages/profile/EnhancedProfilePage.js +0 -150
  379. package/dist/pages/profile/index.d.ts +0 -8
  380. package/dist/pages/profile/index.js +0 -16
  381. package/dist/pages/profile/page.d.ts +0 -19
  382. package/dist/pages/profile/page.js +0 -47
  383. package/dist/pages/profile/profile-patch.d.ts +0 -1
  384. package/dist/pages/profile/profile-patch.js +0 -281
  385. package/dist/pages/recovery/page.d.ts +0 -1
  386. package/dist/pages/recovery/page.js +0 -142
  387. package/dist/pages/roles/MyRolesPage.d.ts +0 -24
  388. package/dist/pages/roles/MyRolesPage.js +0 -71
  389. package/dist/pages/roles/components.d.ts +0 -63
  390. package/dist/pages/roles/components.js +0 -108
  391. package/dist/pages/roles/index.d.ts +0 -8
  392. package/dist/pages/roles/index.js +0 -19
  393. package/dist/pages/security/EnhancedSecurityPage.d.ts +0 -14
  394. package/dist/pages/security/EnhancedSecurityPage.js +0 -248
  395. package/dist/pages/security/index.d.ts +0 -8
  396. package/dist/pages/security/index.js +0 -16
  397. package/dist/pages/security/page.d.ts +0 -21
  398. package/dist/pages/security/page.js +0 -212
  399. package/dist/pages/security/security-patch.d.ts +0 -1
  400. package/dist/pages/security/security-patch.js +0 -302
  401. package/dist/pages/settings/EnhancedSettingsPage.d.ts +0 -46
  402. package/dist/pages/settings/EnhancedSettingsPage.js +0 -231
  403. package/dist/pages/settings/index.d.ts +0 -8
  404. package/dist/pages/settings/index.js +0 -16
  405. package/dist/pages/settings/page.d.ts +0 -7
  406. package/dist/pages/settings/page.js +0 -26
  407. package/dist/pages/showcase/ShowcasePage.d.ts +0 -13
  408. package/dist/pages/showcase/ShowcasePage.js +0 -140
  409. package/dist/pages/showcase/index.d.ts +0 -12
  410. package/dist/pages/showcase/index.js +0 -17
  411. package/dist/pages/test-env/EmergencyLogoutPage.d.ts +0 -14
  412. package/dist/pages/test-env/EmergencyLogoutPage.js +0 -98
  413. package/dist/pages/test-env/JwtInspectPage.d.ts +0 -14
  414. package/dist/pages/test-env/JwtInspectPage.js +0 -114
  415. package/dist/pages/test-env/RefreshTokenPage.d.ts +0 -15
  416. package/dist/pages/test-env/RefreshTokenPage.js +0 -91
  417. package/dist/pages/test-env/TestEnvPage.d.ts +0 -13
  418. package/dist/pages/test-env/TestEnvPage.js +0 -49
  419. package/dist/pages/test-env/index.d.ts +0 -24
  420. package/dist/pages/test-env/index.js +0 -32
  421. package/dist/pages/verify-code/page.d.ts +0 -30
  422. package/dist/pages/verify-code/page.js +0 -408
  423. package/dist/routes/account/index.d.ts +0 -28
  424. package/dist/routes/account/index.js +0 -71
  425. package/dist/routes/account/masked-info.d.ts +0 -33
  426. package/dist/routes/account/masked-info.js +0 -39
  427. package/dist/routes/account/send-code.d.ts +0 -37
  428. package/dist/routes/account/send-code.js +0 -42
  429. package/dist/routes/account/update-phone.d.ts +0 -13
  430. package/dist/routes/account/update-phone.js +0 -17
  431. package/dist/routes/account/verify-email.d.ts +0 -38
  432. package/dist/routes/account/verify-email.js +0 -43
  433. package/dist/routes/account/verify-sms.d.ts +0 -38
  434. package/dist/routes/account/verify-sms.js +0 -43
  435. package/dist/routes/auth/index.d.ts +0 -19
  436. package/dist/routes/auth/index.js +0 -64
  437. package/dist/routes/auth/logout.d.ts +0 -31
  438. package/dist/routes/auth/logout.js +0 -113
  439. package/dist/routes/auth/nextauth.d.ts +0 -19
  440. package/dist/routes/auth/nextauth.js +0 -72
  441. package/dist/routes/auth/refresh.d.ts +0 -30
  442. package/dist/routes/auth/refresh.js +0 -51
  443. package/dist/routes/auth/session.d.ts +0 -43
  444. package/dist/routes/auth/session.js +0 -179
  445. package/dist/routes/auth/settings.d.ts +0 -25
  446. package/dist/routes/auth/settings.js +0 -55
  447. package/dist/routes/auth/viability.d.ts +0 -52
  448. package/dist/routes/auth/viability.js +0 -201
  449. package/dist/routes/index.d.ts +0 -12
  450. package/dist/routes/index.js +0 -54
  451. package/dist/routes/session/index.d.ts +0 -6
  452. package/dist/routes/session/index.js +0 -10
  453. package/dist/routes/session/refresh-viability.d.ts +0 -16
  454. package/dist/routes/session/refresh-viability.js +0 -20
  455. package/dist/server/auth-guard.d.ts +0 -46
  456. package/dist/server/auth-guard.js +0 -128
  457. package/dist/server/decode-session.d.ts +0 -30
  458. package/dist/server/decode-session.js +0 -78
  459. package/dist/server/slim-middleware.d.ts +0 -23
  460. package/dist/server/slim-middleware.js +0 -89
  461. package/dist/server/with-auth.d.ts +0 -33
  462. package/dist/server/with-auth.js +0 -59
  463. package/dist/services/signalrActivityService.d.ts +0 -44
  464. package/dist/services/signalrActivityService.js +0 -257
  465. package/dist/stores/authStore.d.ts +0 -154
  466. package/dist/stores/authStore.js +0 -1531
  467. package/dist/theme/ThemeProvider.d.ts +0 -14
  468. package/dist/theme/ThemeProvider.js +0 -28
  469. package/dist/theme/default.d.ts +0 -8
  470. package/dist/theme/default.js +0 -33
  471. package/dist/theme/index.d.ts +0 -15
  472. package/dist/theme/index.js +0 -25
  473. package/dist/theme/types.d.ts +0 -56
  474. package/dist/theme/types.js +0 -8
  475. package/dist/theme/useTheme.d.ts +0 -60
  476. package/dist/theme/useTheme.js +0 -63
  477. package/dist/theme/utils.d.ts +0 -13
  478. package/dist/theme/utils.js +0 -39
  479. package/dist/types/api.d.ts +0 -134
  480. package/dist/types/api.js +0 -44
  481. package/dist/types/auth.d.ts +0 -19
  482. package/dist/types/auth.js +0 -2
  483. package/dist/types/logging.d.ts +0 -42
  484. package/dist/types/logging.js +0 -2
  485. package/dist/types/recovery.d.ts +0 -48
  486. package/dist/types/recovery.js +0 -2
  487. package/dist/types/security.d.ts +0 -1
  488. package/dist/types/security.js +0 -2
  489. package/dist/utils/api.d.ts +0 -85
  490. package/dist/utils/api.js +0 -287
  491. package/dist/utils/circuitBreaker.d.ts +0 -43
  492. package/dist/utils/circuitBreaker.js +0 -91
  493. package/dist/utils/error-message.d.ts +0 -1
  494. package/dist/utils/error-message.js +0 -103
  495. package/dist/utils/layout/reservedSpace.d.ts +0 -59
  496. package/dist/utils/layout/reservedSpace.js +0 -102
  497. package/dist/utils/logout.d.ts +0 -14
  498. package/dist/utils/logout.js +0 -32
  499. package/dist/vibe/client.d.ts +0 -261
  500. package/dist/vibe/client.js +0 -445
  501. package/dist/vibe/enterprise-auth.d.ts +0 -106
  502. package/dist/vibe/enterprise-auth.js +0 -173
  503. package/dist/vibe/errors.d.ts +0 -83
  504. package/dist/vibe/errors.js +0 -146
  505. package/dist/vibe/generic.d.ts +0 -234
  506. package/dist/vibe/generic.js +0 -369
  507. package/dist/vibe/hooks/index.d.ts +0 -169
  508. package/dist/vibe/hooks/index.js +0 -252
  509. package/dist/vibe/index.d.ts +0 -25
  510. package/dist/vibe/index.js +0 -72
  511. package/dist/vibe/sessions.d.ts +0 -161
  512. package/dist/vibe/sessions.js +0 -391
  513. package/dist/vibe/types.d.ts +0 -353
  514. package/dist/vibe/types.js +0 -315
  515. package/src/auth/auth-options.ts +0 -237
  516. package/src/auth/callbacks/index.ts +0 -7
  517. package/src/auth/callbacks/jwt.ts +0 -382
  518. package/src/auth/callbacks/session.ts +0 -243
  519. package/src/auth/callbacks/signin.ts +0 -56
  520. package/src/auth/events/index.ts +0 -5
  521. package/src/auth/events/signout.ts +0 -33
  522. package/src/auth/providers/credentials.ts +0 -256
  523. package/src/auth/providers/index.ts +0 -6
  524. package/src/auth/providers/oauth.ts +0 -114
  525. package/src/lib/nextauth-secret.ts +0 -121
  526. package/src/types/next-auth.d.ts +0 -15
@@ -1,8 +1,6 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
- import { getToken } from 'next-auth/jwt';
3
- import { resolveNextAuthSecret } from '../../lib/nextauth-secret';
2
+ import { getSession as getBetterAuthSession } from '../../server/auth';
4
3
  import { getSession } from '../../lib/session-store';
5
- import { getJwtCookieName } from '../../lib/app-slug';
6
4
 
7
5
  interface ChangePasswordRequest {
8
6
  current_password: string;
@@ -17,11 +15,10 @@ import { nanoid } from 'nanoid';
17
15
  export async function POST(req: NextRequest) {
18
16
  const requestId = nanoid();
19
17
  try {
20
- // Get session token from NextAuth JWT
21
- // Support both field names: sessionToken (auth.ts JWT) and redisSessionId (legacy)
22
- const token = await getToken({ req, secret: process.env.NEXTAUTH_SECRET, cookieName: getJwtCookieName() });
23
- const sessionToken = (token?.sessionToken || token?.redisSessionId) as string | undefined;
24
- if (!token || typeof sessionToken !== 'string') {
18
+ // Get session from Better Auth
19
+ const betterAuthSession = await getBetterAuthSession(req);
20
+ const sessionToken = betterAuthSession?.session?.token as string | undefined;
21
+ if (!betterAuthSession || typeof sessionToken !== 'string') {
25
22
  return NextResponse.json({ success: false, message: 'Unauthorized' }, { status: 401 });
26
23
  }
27
24
  const sessionData = await getSession(sessionToken);
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { NextRequest, NextResponse } from 'next/server';
12
- import { getServerSession } from 'next-auth';
12
+ import { getSession } from '../../server/auth';
13
13
  import { getStartupIDPConfig } from '../../lib/startup-init';
14
14
  import { ADMIN_ROLES, hasAnyRole } from '../../lib/roles';
15
15
 
@@ -18,9 +18,8 @@ interface VibeRequestOptions {
18
18
  body?: unknown;
19
19
  }
20
20
 
21
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; error?: NextResponse }> {
22
- const authOptions = await getAuthOptions();
23
- const session = await getServerSession(authOptions) as any;
21
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; error?: NextResponse }> {
22
+ const session = await getSession(request) as any;
24
23
 
25
24
  if (!session?.user) {
26
25
  return {
@@ -110,7 +109,6 @@ function getCountryFlag(countryCode: string): string {
110
109
  }
111
110
 
112
111
  export interface AdminAnalyticsHandlerConfig {
113
- getAuthOptions: () => Promise<any>;
114
112
  }
115
113
 
116
114
  /**
@@ -120,7 +118,7 @@ export interface AdminAnalyticsHandlerConfig {
120
118
  export function createAnalyticsHandler(config: AdminAnalyticsHandlerConfig) {
121
119
  return {
122
120
  async POST(request: NextRequest) {
123
- const adminCheck = await checkAdminRole(config.getAuthOptions);
121
+ const adminCheck = await checkAdminRole(request);
124
122
  if (adminCheck.error) return adminCheck.error;
125
123
 
126
124
  const body = await request.json();
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { NextRequest, NextResponse } from 'next/server';
11
- import { getServerSession } from 'next-auth';
11
+ import { getSession } from '../../server/auth';
12
12
  import { getStartupIDPConfig } from '../../lib/startup-init';
13
13
  import { ADMIN_ROLES, hasAnyRole } from '../../lib/roles';
14
14
 
@@ -17,9 +17,8 @@ interface VibeRequestOptions {
17
17
  body?: unknown;
18
18
  }
19
19
 
20
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; error?: NextResponse }> {
21
- const authOptions = await getAuthOptions();
22
- const session = await getServerSession(authOptions) as any;
20
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; error?: NextResponse }> {
21
+ const session = await getSession(request) as any;
23
22
 
24
23
  if (!session?.user) {
25
24
  return {
@@ -100,7 +99,6 @@ async function vibeServiceRequest<T = unknown>(
100
99
  }
101
100
 
102
101
  export interface AdminAuditHandlerConfig {
103
- getAuthOptions: () => Promise<any>;
104
102
  }
105
103
 
106
104
  /**
@@ -110,7 +108,7 @@ export interface AdminAuditHandlerConfig {
110
108
  export function createAuditHandler(config: AdminAuditHandlerConfig) {
111
109
  return {
112
110
  async GET(request: NextRequest) {
113
- const adminCheck = await checkAdminRole(config.getAuthOptions);
111
+ const adminCheck = await checkAdminRole(request);
114
112
  if (adminCheck.error) return adminCheck.error;
115
113
 
116
114
  const { searchParams } = new URL(request.url);
@@ -178,7 +176,7 @@ export function createAuditHandler(config: AdminAuditHandlerConfig) {
178
176
  },
179
177
 
180
178
  async POST(request: NextRequest) {
181
- const adminCheck = await checkAdminRole(config.getAuthOptions);
179
+ const adminCheck = await checkAdminRole(request);
182
180
  if (adminCheck.error) return adminCheck.error;
183
181
 
184
182
  const body = await request.json();
@@ -8,9 +8,8 @@
8
8
  * ------
9
9
  * // In your app's API route (e.g., app/api/admin/vibe/data/[collection]/[table]/route.ts)
10
10
  * import { createGetTableDataHandler } from '@payez/next-mvp/api-handlers/admin';
11
- * import { getAuthOptions } from '@payez/next-mvp/auth/auth-options';
12
11
  *
13
- * export const GET = createGetTableDataHandler({ getAuthOptions });
12
+ * export const GET = createGetTableDataHandler({ ... });
14
13
  */
15
14
 
16
15
  export {
@@ -12,21 +12,19 @@
12
12
  */
13
13
 
14
14
  import { NextRequest, NextResponse } from 'next/server';
15
- import { getServerSession } from 'next-auth';
15
+ import { getSession } from '../../server/auth';
16
16
  import { getRedis } from '../../lib/redis';
17
17
  import { ADMIN_ROLES, hasAnyRole } from '../../lib/roles';
18
18
 
19
19
  export interface RedisSessionsHandlerConfig {
20
- getAuthOptions: () => Promise<any>;
21
20
  appSlug?: string;
22
21
  }
23
22
 
24
23
  /**
25
24
  * Check if the current user has admin role
26
25
  */
27
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; userId?: number; error?: NextResponse }> {
28
- const authOptions = await getAuthOptions();
29
- const session = await getServerSession(authOptions) as any;
26
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; userId?: number; error?: NextResponse }> {
27
+ const session = await getSession(request) as any;
30
28
 
31
29
  if (!session?.user) {
32
30
  return {
@@ -66,7 +64,7 @@ export function createRedisSessionsHandler(config: RedisSessionsHandlerConfig) {
66
64
 
67
65
  return {
68
66
  async GET(request: NextRequest) {
69
- const adminCheck = await checkAdminRole(config.getAuthOptions);
67
+ const adminCheck = await checkAdminRole(request);
70
68
  if (adminCheck.error) return adminCheck.error;
71
69
 
72
70
  try {
@@ -140,7 +138,7 @@ export function createRedisSessionsHandler(config: RedisSessionsHandlerConfig) {
140
138
  },
141
139
 
142
140
  async DELETE(request: NextRequest) {
143
- const adminCheck = await checkAdminRole(config.getAuthOptions);
141
+ const adminCheck = await checkAdminRole(request);
144
142
  if (adminCheck.error) return adminCheck.error;
145
143
 
146
144
  try {
@@ -196,7 +194,7 @@ export function createRedisSessionRevokeHandler(config: RedisSessionsHandlerConf
196
194
 
197
195
  return {
198
196
  async POST(request: NextRequest, { params }: { params: { sessionId: string } }) {
199
- const adminCheck = await checkAdminRole(config.getAuthOptions);
197
+ const adminCheck = await checkAdminRole(request);
200
198
  if (adminCheck.error) return adminCheck.error;
201
199
 
202
200
  try {
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { NextRequest, NextResponse } from 'next/server';
12
- import { getServerSession } from 'next-auth';
12
+ import { getSession } from '../../server/auth';
13
13
  import { getStartupIDPConfig } from '../../lib/startup-init';
14
14
  import { ADMIN_ROLES, hasAnyRole } from '../../lib/roles';
15
15
 
@@ -21,9 +21,8 @@ interface VibeRequestOptions {
21
21
  /**
22
22
  * Check if the current user has admin role
23
23
  */
24
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; userId?: number; error?: NextResponse }> {
25
- const authOptions = await getAuthOptions();
26
- const session = await getServerSession(authOptions) as any;
24
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; userId?: number; error?: NextResponse }> {
25
+ const session = await getSession(request) as any;
27
26
 
28
27
  if (!session?.user) {
29
28
  return {
@@ -126,7 +125,6 @@ function getCountryFlag(countryCode: string): string {
126
125
  }
127
126
 
128
127
  export interface AdminSessionsHandlerConfig {
129
- getAuthOptions: () => Promise<any>;
130
128
  }
131
129
 
132
130
  /**
@@ -136,7 +134,7 @@ export interface AdminSessionsHandlerConfig {
136
134
  export function createSessionsHandler(config: AdminSessionsHandlerConfig) {
137
135
  return {
138
136
  async GET(request: NextRequest) {
139
- const adminCheck = await checkAdminRole(config.getAuthOptions);
137
+ const adminCheck = await checkAdminRole(request);
140
138
  if (adminCheck.error) return adminCheck.error;
141
139
 
142
140
  const { searchParams } = new URL(request.url);
@@ -201,7 +199,7 @@ export function createSessionsHandler(config: AdminSessionsHandlerConfig) {
201
199
  },
202
200
 
203
201
  async POST(request: NextRequest) {
204
- const adminCheck = await checkAdminRole(config.getAuthOptions);
202
+ const adminCheck = await checkAdminRole(request);
205
203
  if (adminCheck.error) return adminCheck.error;
206
204
 
207
205
  const body = await request.json();
@@ -13,14 +13,13 @@
13
13
  */
14
14
 
15
15
  import { NextRequest, NextResponse } from 'next/server';
16
- import { getServerSession } from 'next-auth';
16
+ import { getSession } from '../../server/auth';
17
17
  import { getRedis } from '../../lib/redis';
18
18
  import { ADMIN_ROLES, hasAnyRole } from '../../lib/roles';
19
19
  const REDIS_SITE_LOG_KEY = 'vibe:site-logs:pending';
20
20
  const REDIS_LOG_TTL = 7 * 24 * 60 * 60; // 1 week
21
21
 
22
22
  export interface SiteLogsHandlerConfig {
23
- getAuthOptions: () => Promise<any>;
24
23
  vibeApiUrl?: string;
25
24
  appSlug?: string;
26
25
  vibeClientId?: string;
@@ -29,9 +28,8 @@ export interface SiteLogsHandlerConfig {
29
28
  /**
30
29
  * Check if the current user has admin role
31
30
  */
32
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; userId?: number; accessToken?: string; clientId?: string; error?: NextResponse }> {
33
- const authOptions = await getAuthOptions();
34
- const session = await getServerSession(authOptions) as any;
31
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; userId?: number; accessToken?: string; clientId?: string; error?: NextResponse }> {
32
+ const session = await getSession(request) as any;
35
33
 
36
34
  if (!session?.user) {
37
35
  return {
@@ -78,7 +76,7 @@ function getVibeApiUrl(config: SiteLogsHandlerConfig): string {
78
76
  export function createSiteLogsHandler(config: SiteLogsHandlerConfig) {
79
77
  return {
80
78
  async GET(request: NextRequest) {
81
- const adminCheck = await checkAdminRole(config.getAuthOptions);
79
+ const adminCheck = await checkAdminRole(request);
82
80
  if (adminCheck.error) return adminCheck.error;
83
81
 
84
82
  const { searchParams } = new URL(request.url);
@@ -127,7 +125,7 @@ export function createSiteLogsHandler(config: SiteLogsHandlerConfig) {
127
125
  },
128
126
 
129
127
  async POST(request: NextRequest) {
130
- const adminCheck = await checkAdminRole(config.getAuthOptions);
128
+ const adminCheck = await checkAdminRole(request);
131
129
  if (adminCheck.error) return adminCheck.error;
132
130
 
133
131
  try {
@@ -211,7 +209,7 @@ export function createSiteLogsHandler(config: SiteLogsHandlerConfig) {
211
209
  export function createSiteLogsStatsHandler(config: SiteLogsHandlerConfig) {
212
210
  return {
213
211
  async GET(request: NextRequest) {
214
- const adminCheck = await checkAdminRole(config.getAuthOptions);
212
+ const adminCheck = await checkAdminRole(request);
215
213
  if (adminCheck.error) return adminCheck.error;
216
214
 
217
215
  const { searchParams } = new URL(request.url);
@@ -261,7 +259,7 @@ export function createSiteLogsStatsHandler(config: SiteLogsHandlerConfig) {
261
259
  export function createSiteLogsDrainHandler(config: SiteLogsHandlerConfig) {
262
260
  return {
263
261
  async POST(request: NextRequest) {
264
- const adminCheck = await checkAdminRole(config.getAuthOptions);
262
+ const adminCheck = await checkAdminRole(request);
265
263
  if (adminCheck.error) return adminCheck.error;
266
264
 
267
265
  const { searchParams } = new URL(request.url);
@@ -310,7 +308,7 @@ export function createSiteLogsDrainHandler(config: SiteLogsHandlerConfig) {
310
308
  export function createSiteLogsQueueHandler(config: SiteLogsHandlerConfig) {
311
309
  return {
312
310
  async GET(request: NextRequest) {
313
- const adminCheck = await checkAdminRole(config.getAuthOptions);
311
+ const adminCheck = await checkAdminRole(request);
314
312
  if (adminCheck.error) return adminCheck.error;
315
313
 
316
314
  try {
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { NextRequest, NextResponse } from 'next/server';
12
- import { getServerSession } from 'next-auth';
12
+ import { getSession } from '../../server/auth';
13
13
  import { getStartupIDPConfig } from '../../lib/startup-init';
14
14
  import { getRedis } from '../../lib/redis';
15
15
  import { ADMIN_ROLES } from '../../lib/roles';
@@ -19,9 +19,8 @@ interface VibeRequestOptions {
19
19
  body?: unknown;
20
20
  }
21
21
 
22
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; error?: NextResponse }> {
23
- const authOptions = await getAuthOptions();
24
- const session = await getServerSession(authOptions) as any;
22
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; error?: NextResponse }> {
23
+ const session = await getSession(request) as any;
25
24
 
26
25
  if (!session?.user) {
27
26
  return {
@@ -101,7 +100,6 @@ async function vibeServiceRequest<T = unknown>(
101
100
  }
102
101
 
103
102
  export interface AdminStatsHandlerConfig {
104
- getAuthOptions: () => Promise<any>;
105
103
  appSlug?: string;
106
104
  }
107
105
 
@@ -117,7 +115,7 @@ export function createStatsHandler(config: AdminStatsHandlerConfig) {
117
115
 
118
116
  return {
119
117
  async GET(_request: NextRequest) {
120
- const adminCheck = await checkAdminRole(config.getAuthOptions);
118
+ const adminCheck = await checkAdminRole(_request);
121
119
  if (adminCheck.error) return adminCheck.error;
122
120
 
123
121
  try {
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { NextRequest, NextResponse } from 'next/server';
11
- import { getServerSession } from 'next-auth';
11
+ import { getSession } from '../../server/auth';
12
12
  import { getStartupIDPConfig } from '../../lib/startup-init';
13
13
  import { ADMIN_ROLES, hasAnyRole } from '../../lib/roles';
14
14
 
@@ -17,9 +17,8 @@ interface VibeRequestOptions {
17
17
  body?: unknown;
18
18
  }
19
19
 
20
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; error?: NextResponse }> {
21
- const authOptions = await getAuthOptions();
22
- const session = await getServerSession(authOptions) as any;
20
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; error?: NextResponse }> {
21
+ const session = await getSession(request) as any;
23
22
 
24
23
  if (!session?.user) {
25
24
  return {
@@ -100,7 +99,6 @@ async function vibeServiceRequest<T = unknown>(
100
99
  }
101
100
 
102
101
  export interface AdminUsersHandlerConfig {
103
- getAuthOptions: () => Promise<any>;
104
102
  }
105
103
 
106
104
  /**
@@ -110,7 +108,7 @@ export interface AdminUsersHandlerConfig {
110
108
  export function createUsersHandler(config: AdminUsersHandlerConfig) {
111
109
  return {
112
110
  async GET(request: NextRequest) {
113
- const adminCheck = await checkAdminRole(config.getAuthOptions);
111
+ const adminCheck = await checkAdminRole(request);
114
112
  if (adminCheck.error) return adminCheck.error;
115
113
 
116
114
  const { searchParams } = new URL(request.url);
@@ -175,7 +173,7 @@ export function createUsersHandler(config: AdminUsersHandlerConfig) {
175
173
  },
176
174
 
177
175
  async POST(request: NextRequest) {
178
- const adminCheck = await checkAdminRole(config.getAuthOptions);
176
+ const adminCheck = await checkAdminRole(request);
179
177
  if (adminCheck.error) return adminCheck.error;
180
178
 
181
179
  const body = await request.json();
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { NextRequest, NextResponse } from 'next/server';
12
- import { getServerSession } from 'next-auth';
12
+ import { getSession } from '../../server/auth';
13
13
  import { getStartupIDPConfig } from '../../lib/startup-init';
14
14
  import { ADMIN_ROLES, hasAnyRole } from '../../lib/roles';
15
15
 
@@ -21,9 +21,8 @@ interface VibeRequestOptions {
21
21
  /**
22
22
  * Check if the current user has admin role
23
23
  */
24
- async function checkAdminRole(getAuthOptions: () => Promise<any>): Promise<{ isAdmin: boolean; error?: NextResponse }> {
25
- const authOptions = await getAuthOptions();
26
- const session = await getServerSession(authOptions) as any;
24
+ async function checkAdminRole(request: NextRequest): Promise<{ isAdmin: boolean; error?: NextResponse }> {
25
+ const session = await getSession(request) as any;
27
26
 
28
27
  if (!session?.user) {
29
28
  return {
@@ -125,7 +124,6 @@ async function vibeServiceRequest<T = unknown>(
125
124
  // =============================================================================
126
125
 
127
126
  export interface AdminVibeHandlerConfig {
128
- getAuthOptions: () => Promise<any>;
129
127
  }
130
128
 
131
129
  /**
@@ -134,7 +132,7 @@ export interface AdminVibeHandlerConfig {
134
132
  */
135
133
  export function createGetCollectionsHandler(config: AdminVibeHandlerConfig) {
136
134
  return async function GET(request: NextRequest) {
137
- const adminCheck = await checkAdminRole(config.getAuthOptions);
135
+ const adminCheck = await checkAdminRole(request);
138
136
  if (adminCheck.error) return adminCheck.error;
139
137
 
140
138
  const result = await vibeServiceRequest<any>('/v1/collections', { method: 'GET' });
@@ -160,7 +158,7 @@ export function createGetTablesHandler(config: AdminVibeHandlerConfig) {
160
158
  { params }: { params: Promise<{ collection: string }> }
161
159
  ) {
162
160
  const { collection } = await params;
163
- const adminCheck = await checkAdminRole(config.getAuthOptions);
161
+ const adminCheck = await checkAdminRole(request);
164
162
  if (adminCheck.error) return adminCheck.error;
165
163
 
166
164
  const result = await vibeServiceRequest<any>(`/v1/collections/${collection}/tables`, { method: 'GET' });
@@ -186,7 +184,7 @@ export function createGetTableDataHandler(config: AdminVibeHandlerConfig) {
186
184
  { params }: { params: Promise<{ collection: string; table: string }> }
187
185
  ) {
188
186
  const { collection, table } = await params;
189
- const adminCheck = await checkAdminRole(config.getAuthOptions);
187
+ const adminCheck = await checkAdminRole(request);
190
188
  if (adminCheck.error) return adminCheck.error;
191
189
 
192
190
  const searchParams = request.nextUrl.searchParams.toString();
@@ -220,7 +218,7 @@ export function createGetRecordHandler(config: AdminVibeHandlerConfig) {
220
218
  { params }: { params: Promise<{ collection: string; table: string; id: string }> }
221
219
  ) {
222
220
  const { collection, table, id } = await params;
223
- const adminCheck = await checkAdminRole(config.getAuthOptions);
221
+ const adminCheck = await checkAdminRole(request);
224
222
  if (adminCheck.error) return adminCheck.error;
225
223
 
226
224
  const endpoint = `/v1/collections/${collection}/tables/${table}/${id}`;
@@ -248,7 +246,7 @@ export function createUpdateRecordHandler(config: AdminVibeHandlerConfig) {
248
246
  { params }: { params: Promise<{ collection: string; table: string; id: string }> }
249
247
  ) {
250
248
  const { collection, table, id } = await params;
251
- const adminCheck = await checkAdminRole(config.getAuthOptions);
249
+ const adminCheck = await checkAdminRole(request);
252
250
  if (adminCheck.error) return adminCheck.error;
253
251
 
254
252
  const body = await request.json();
@@ -276,7 +274,7 @@ export function createDeleteRecordHandler(config: AdminVibeHandlerConfig) {
276
274
  { params }: { params: Promise<{ collection: string; table: string; id: string }> }
277
275
  ) {
278
276
  const { collection, table, id } = await params;
279
- const adminCheck = await checkAdminRole(config.getAuthOptions);
277
+ const adminCheck = await checkAdminRole(request);
280
278
  if (adminCheck.error) return adminCheck.error;
281
279
 
282
280
  const endpoint = `/v1/collections/${collection}/tables/${table}/${id}`;
@@ -303,7 +301,7 @@ export function createQueryHandler(config: AdminVibeHandlerConfig) {
303
301
  { params }: { params: Promise<{ collection: string; table: string }> }
304
302
  ) {
305
303
  const { collection, table } = await params;
306
- const adminCheck = await checkAdminRole(config.getAuthOptions);
304
+ const adminCheck = await checkAdminRole(request);
307
305
  if (adminCheck.error) return adminCheck.error;
308
306
 
309
307
  const body = await request.json();
@@ -15,10 +15,9 @@
15
15
  */
16
16
 
17
17
  import { NextRequest, NextResponse } from 'next/server';
18
- import { getToken } from 'next-auth/jwt';
18
+ import { getSession as getBetterAuthSession } from '../../server/auth';
19
19
  import { getSession, updateSession, acquireRefreshLock, releaseRefreshLock, checkRefreshLock } from '../../lib/session-store';
20
20
  import { computeTokenExpiries } from '../../lib/token-expiry';
21
- import { getJwtCookieName } from '../../lib/app-slug';
22
21
  import { extractKidFromToken } from '../../auth/utils/token-utils';
23
22
 
24
23
  interface RefreshConfig {
@@ -52,12 +51,11 @@ export function createRefreshHandler(config: RefreshConfig) {
52
51
 
53
52
  return async function POST(req: NextRequest) {
54
53
  try {
55
- // Extract session token from NextAuth JWT
56
- const token = await getToken({ req, secret: nextAuthSecret, cookieName: getJwtCookieName() });
54
+ // Extract session from Better Auth
55
+ const betterAuthSession = await getBetterAuthSession(req);
57
56
 
58
- // Support both field names: sessionToken (auth.ts JWT) and redisSessionId (legacy)
59
- let sessionToken = (token?.sessionToken || token?.redisSessionId) as string | undefined;
60
- let userId = token?.sub;
57
+ let sessionToken = (betterAuthSession?.session?.token) as string | undefined;
58
+ let userId = betterAuthSession?.user?.id;
61
59
 
62
60
  if (!sessionToken) {
63
61
  // Fallback: check for session token in header (for internal server-to-server calls)
@@ -12,7 +12,7 @@
12
12
  import { NextRequest, NextResponse } from 'next/server';
13
13
  import { cookies } from 'next/headers';
14
14
  import { deleteSession } from '../../lib/session-store';
15
- import { getToken } from 'next-auth/jwt';
15
+ import { getSession } from '../../server/auth';
16
16
  import {
17
17
  getSessionCookieName,
18
18
  getSecureSessionCookieName,
@@ -116,13 +116,12 @@ export function createSignoutHandler(config: SignoutConfig) {
116
116
  // Decode NextAuth JWT to extract the Redis session UUID before deletion
117
117
  let redisSessionToken: string | null = null;
118
118
 
119
- // First attempt: NextAuth getToken (verified + robust in most cases)
120
- // Support both field names: sessionToken (auth.ts JWT) and redisSessionId (legacy)
119
+ // First attempt: Better Auth getSession
121
120
  try {
122
- const token = await getToken({ req, secret: nextAuthSecret, cookieName: getJwtCookieName() });
123
- redisSessionToken = (token as any)?.sessionToken || (token as any)?.redisSessionId || null;
121
+ const betterAuthSession = await getSession(req);
122
+ redisSessionToken = betterAuthSession?.session?.token || null;
124
123
  } catch (e) {
125
- console.warn('[SIGNOUT] getToken() failed to extract session token (will try manual decode)');
124
+ console.warn('[SIGNOUT] getSession() failed to extract session token (will try manual decode)');
126
125
  }
127
126
 
128
127
  // Second attempt: manual decode of the session cookie JWT (no verification)
@@ -1,14 +1,11 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
- import { getToken } from 'next-auth/jwt';
3
- import { resolveNextAuthSecret } from '../../lib/nextauth-secret';
2
+ import { getSession } from '../../server/auth';
4
3
  import { getSession as getRedisSession } from '../../lib/session-store';
5
- import { getJwtCookieName } from '../../lib/app-slug';
6
4
 
7
5
  export async function GET(req: NextRequest) {
8
6
  try {
9
- let token: any = await getToken({ req, secret: await resolveNextAuthSecret(), cookieName: getJwtCookieName() });
10
- // Support both field names: sessionToken (auth.ts JWT) and redisSessionId (legacy)
11
- const sessionToken = (token as any)?.sessionToken || (token as any)?.redisSessionId;
7
+ const betterAuthSession = await getSession(req);
8
+ const sessionToken = betterAuthSession?.session?.token;
12
9
  if (!sessionToken) {
13
10
  return NextResponse.json({ success: false, error: 'No session token' }, { status: 401 });
14
11
  }
@@ -16,7 +13,7 @@ export async function GET(req: NextRequest) {
16
13
  if (!sessionModel) {
17
14
  return NextResponse.json({ success: false, error: 'Session missing in Redis' }, { status: 401 });
18
15
  }
19
- return NextResponse.json({ success: true, userId: (sessionModel as any).userId || null });
16
+ return NextResponse.json({ success: true, userId: betterAuthSession?.user?.id || (sessionModel as any).userId || null });
20
17
  } catch (err) {
21
18
  return NextResponse.json({ success: false, error: err instanceof Error ? err.message : 'Unknown error' }, { status: 500 });
22
19
  }