@payez/next-mvp 3.0.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.
- package/README.md +782 -0
- package/dist/api/auth-handler.d.ts +67 -0
- package/dist/api/auth-handler.js +397 -0
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.js +19 -0
- package/dist/api-handlers/account/change-password.d.ts +9 -0
- package/dist/api-handlers/account/change-password.js +112 -0
- package/dist/api-handlers/account/masked-info.d.ts +2 -0
- package/dist/api-handlers/account/masked-info.js +41 -0
- package/dist/api-handlers/account/profile.d.ts +3 -0
- package/dist/api-handlers/account/profile.js +63 -0
- package/dist/api-handlers/account/recovery/initiate.d.ts +2 -0
- package/dist/api-handlers/account/recovery/initiate.js +26 -0
- package/dist/api-handlers/account/recovery/send-code.d.ts +2 -0
- package/dist/api-handlers/account/recovery/send-code.js +28 -0
- package/dist/api-handlers/account/recovery/verify-code.d.ts +2 -0
- package/dist/api-handlers/account/recovery/verify-code.js +28 -0
- package/dist/api-handlers/account/reset-password.d.ts +2 -0
- package/dist/api-handlers/account/reset-password.js +26 -0
- package/dist/api-handlers/account/send-code.d.ts +24 -0
- package/dist/api-handlers/account/send-code.js +60 -0
- package/dist/api-handlers/account/update-phone.d.ts +27 -0
- package/dist/api-handlers/account/update-phone.js +64 -0
- package/dist/api-handlers/account/validate-password.d.ts +17 -0
- package/dist/api-handlers/account/validate-password.js +81 -0
- package/dist/api-handlers/account/verify-email.d.ts +26 -0
- package/dist/api-handlers/account/verify-email.js +106 -0
- package/dist/api-handlers/account/verify-sms.d.ts +26 -0
- package/dist/api-handlers/account/verify-sms.js +106 -0
- package/dist/api-handlers/admin/analytics.d.ts +20 -0
- package/dist/api-handlers/admin/analytics.js +379 -0
- package/dist/api-handlers/admin/audit.d.ts +20 -0
- package/dist/api-handlers/admin/audit.js +214 -0
- package/dist/api-handlers/admin/index.d.ts +21 -0
- package/dist/api-handlers/admin/index.js +41 -0
- package/dist/api-handlers/admin/redis-sessions.d.ts +36 -0
- package/dist/api-handlers/admin/redis-sessions.js +204 -0
- package/dist/api-handlers/admin/sessions.d.ts +21 -0
- package/dist/api-handlers/admin/sessions.js +284 -0
- package/dist/api-handlers/admin/site-logs.d.ts +46 -0
- package/dist/api-handlers/admin/site-logs.js +318 -0
- package/dist/api-handlers/admin/users.d.ts +20 -0
- package/dist/api-handlers/admin/users.js +222 -0
- package/dist/api-handlers/admin/vibe-data.d.ts +80 -0
- package/dist/api-handlers/admin/vibe-data.js +268 -0
- package/dist/api-handlers/anon/preferences.d.ts +37 -0
- package/dist/api-handlers/anon/preferences.js +96 -0
- package/dist/api-handlers/auth/jwks.d.ts +2 -0
- package/dist/api-handlers/auth/jwks.js +24 -0
- package/dist/api-handlers/auth/login.d.ts +42 -0
- package/dist/api-handlers/auth/login.js +178 -0
- package/dist/api-handlers/auth/refresh.d.ts +74 -0
- package/dist/api-handlers/auth/refresh.js +635 -0
- package/dist/api-handlers/auth/signout.d.ts +37 -0
- package/dist/api-handlers/auth/signout.js +187 -0
- package/dist/api-handlers/auth/status.d.ts +8 -0
- package/dist/api-handlers/auth/status.js +26 -0
- package/dist/api-handlers/auth/update-session.d.ts +37 -0
- package/dist/api-handlers/auth/update-session.js +95 -0
- package/dist/api-handlers/auth/validate.d.ts +6 -0
- package/dist/api-handlers/auth/validate.js +43 -0
- package/dist/api-handlers/auth/verify-code.d.ts +43 -0
- package/dist/api-handlers/auth/verify-code.js +94 -0
- package/dist/api-handlers/session/refresh-viability.d.ts +14 -0
- package/dist/api-handlers/session/refresh-viability.js +39 -0
- package/dist/api-handlers/session/viability.d.ts +13 -0
- package/dist/api-handlers/session/viability.js +146 -0
- package/dist/api-handlers/test/force-expire.d.ts +23 -0
- package/dist/api-handlers/test/force-expire.js +65 -0
- package/dist/auth/auth-decision.d.ts +39 -0
- package/dist/auth/auth-decision.js +182 -0
- package/dist/auth/auth-options.d.ts +57 -0
- package/dist/auth/auth-options.js +213 -0
- package/dist/auth/callbacks/index.d.ts +6 -0
- package/dist/auth/callbacks/index.js +12 -0
- package/dist/auth/callbacks/jwt.d.ts +45 -0
- package/dist/auth/callbacks/jwt.js +305 -0
- package/dist/auth/callbacks/session.d.ts +60 -0
- package/dist/auth/callbacks/session.js +170 -0
- package/dist/auth/callbacks/signin.d.ts +23 -0
- package/dist/auth/callbacks/signin.js +44 -0
- package/dist/auth/events/index.d.ts +4 -0
- package/dist/auth/events/index.js +8 -0
- package/dist/auth/events/signout.d.ts +17 -0
- package/dist/auth/events/signout.js +32 -0
- package/dist/auth/providers/credentials.d.ts +32 -0
- package/dist/auth/providers/credentials.js +223 -0
- package/dist/auth/providers/index.d.ts +5 -0
- package/dist/auth/providers/index.js +21 -0
- package/dist/auth/providers/oauth.d.ts +26 -0
- package/dist/auth/providers/oauth.js +105 -0
- package/dist/auth/route-config.d.ts +66 -0
- package/dist/auth/route-config.js +190 -0
- package/dist/auth/types/auth-types.d.ts +417 -0
- package/dist/auth/types/auth-types.js +53 -0
- package/dist/auth/types/index.d.ts +6 -0
- package/dist/auth/types/index.js +22 -0
- package/dist/auth/unauthenticated-routes.d.ts +1 -0
- package/dist/auth/unauthenticated-routes.js +19 -0
- package/dist/auth/utils/idp-client.d.ts +94 -0
- package/dist/auth/utils/idp-client.js +383 -0
- package/dist/auth/utils/index.d.ts +5 -0
- package/dist/auth/utils/index.js +21 -0
- package/dist/auth/utils/token-utils.d.ts +84 -0
- package/dist/auth/utils/token-utils.js +219 -0
- package/dist/client/AuthContext.d.ts +19 -0
- package/dist/client/AuthContext.js +112 -0
- package/dist/client/fetch-with-auth.d.ts +11 -0
- package/dist/client/fetch-with-auth.js +44 -0
- package/dist/client/fetchWithSession.d.ts +3 -0
- package/dist/client/fetchWithSession.js +24 -0
- package/dist/client/index.d.ts +9 -0
- package/dist/client/index.js +20 -0
- package/dist/client/useAnonSession.d.ts +36 -0
- package/dist/client/useAnonSession.js +99 -0
- package/dist/components/SessionSync.d.ts +13 -0
- package/dist/components/SessionSync.js +119 -0
- package/dist/components/SignalRHealthCheck.d.ts +10 -0
- package/dist/components/SignalRHealthCheck.js +97 -0
- package/dist/components/account/UserAvatarMenu.d.ts +20 -0
- package/dist/components/account/UserAvatarMenu.js +80 -0
- package/dist/components/account/index.d.ts +7 -0
- package/dist/components/account/index.js +10 -0
- package/dist/components/admin/AlertSettingsTab.d.ts +48 -0
- package/dist/components/admin/AlertSettingsTab.js +351 -0
- package/dist/components/admin/AnalyticsTab.d.ts +22 -0
- package/dist/components/admin/AnalyticsTab.js +167 -0
- package/dist/components/admin/DataBrowserTab.d.ts +19 -0
- package/dist/components/admin/DataBrowserTab.js +252 -0
- package/dist/components/admin/LoggingSettingsTab.d.ts +73 -0
- package/dist/components/admin/LoggingSettingsTab.js +339 -0
- package/dist/components/admin/SessionsTab.d.ts +37 -0
- package/dist/components/admin/SessionsTab.js +165 -0
- package/dist/components/admin/StatsTab.d.ts +53 -0
- package/dist/components/admin/StatsTab.js +161 -0
- package/dist/components/admin/VibeAdminContext.d.ts +32 -0
- package/dist/components/admin/VibeAdminContext.js +38 -0
- package/dist/components/admin/VibeAdminLayout.d.ts +11 -0
- package/dist/components/admin/VibeAdminLayout.js +69 -0
- package/dist/components/admin/index.d.ts +29 -0
- package/dist/components/admin/index.js +44 -0
- package/dist/components/auth/FederatedAuthSection.d.ts +8 -0
- package/dist/components/auth/FederatedAuthSection.js +45 -0
- package/dist/components/auth/ModeAwareLoginPage.d.ts +10 -0
- package/dist/components/auth/ModeAwareLoginPage.js +42 -0
- package/dist/components/auth/ModeAwareSignupPage.d.ts +9 -0
- package/dist/components/auth/ModeAwareSignupPage.js +78 -0
- package/dist/components/auth/TraditionalAuthSection.d.ts +14 -0
- package/dist/components/auth/TraditionalAuthSection.js +20 -0
- package/dist/components/recovery/CompleteStep.d.ts +5 -0
- package/dist/components/recovery/CompleteStep.js +8 -0
- package/dist/components/recovery/InitiateRecoveryStep.d.ts +8 -0
- package/dist/components/recovery/InitiateRecoveryStep.js +20 -0
- package/dist/components/recovery/SelectMethodStep.d.ts +8 -0
- package/dist/components/recovery/SelectMethodStep.js +8 -0
- package/dist/components/recovery/SetPasswordStep.d.ts +6 -0
- package/dist/components/recovery/SetPasswordStep.js +20 -0
- package/dist/components/recovery/VerifyCodeStep.d.ts +10 -0
- package/dist/components/recovery/VerifyCodeStep.js +24 -0
- package/dist/components/reserved/ReservedRecoveryWarning.d.ts +38 -0
- package/dist/components/reserved/ReservedRecoveryWarning.js +92 -0
- package/dist/components/reserved/ReservedStatusBox.d.ts +30 -0
- package/dist/components/reserved/ReservedStatusBox.js +71 -0
- package/dist/components/ui/BetaBadge.d.ts +29 -0
- package/dist/components/ui/BetaBadge.js +38 -0
- package/dist/components/ui/Footer.d.ts +37 -0
- package/dist/components/ui/Footer.js +41 -0
- package/dist/config/env.d.ts +66 -0
- package/dist/config/env.js +57 -0
- package/dist/config/logger.d.ts +57 -0
- package/dist/config/logger.js +73 -0
- package/dist/config/logging-config.d.ts +30 -0
- package/dist/config/logging-config.js +122 -0
- package/dist/config/unauthenticated-routes.d.ts +17 -0
- package/dist/config/unauthenticated-routes.js +24 -0
- package/dist/config/vibe-log-transport.d.ts +79 -0
- package/dist/config/vibe-log-transport.js +203 -0
- package/dist/edge/internal-api-url.d.ts +53 -0
- package/dist/edge/internal-api-url.js +63 -0
- package/dist/edge/middleware.d.ts +14 -0
- package/dist/edge/middleware.js +32 -0
- package/dist/hooks/useAuth.d.ts +23 -0
- package/dist/hooks/useAuth.js +81 -0
- package/dist/hooks/useAuthSettings.d.ts +59 -0
- package/dist/hooks/useAuthSettings.js +93 -0
- package/dist/hooks/useAvailableProviders.d.ts +45 -0
- package/dist/hooks/useAvailableProviders.js +108 -0
- package/dist/hooks/usePasswordValidation.d.ts +27 -0
- package/dist/hooks/usePasswordValidation.js +102 -0
- package/dist/hooks/useProfile.d.ts +15 -0
- package/dist/hooks/useProfile.js +59 -0
- package/dist/hooks/usePublicAuthSettings.d.ts +56 -0
- package/dist/hooks/usePublicAuthSettings.js +131 -0
- package/dist/hooks/useSessionExpiration.d.ts +57 -0
- package/dist/hooks/useSessionExpiration.js +72 -0
- package/dist/hooks/useViabilitySession.d.ts +75 -0
- package/dist/hooks/useViabilitySession.js +268 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +54 -0
- package/dist/lib/anon-session.d.ts +74 -0
- package/dist/lib/anon-session.js +169 -0
- package/dist/lib/api-handler.d.ts +123 -0
- package/dist/lib/api-handler.js +478 -0
- package/dist/lib/app-slug.d.ts +95 -0
- package/dist/lib/app-slug.js +172 -0
- package/dist/lib/demo-mode.d.ts +6 -0
- package/dist/lib/demo-mode.js +16 -0
- package/dist/lib/geolocation.d.ts +64 -0
- package/dist/lib/geolocation.js +235 -0
- package/dist/lib/idp-client-config.d.ts +75 -0
- package/dist/lib/idp-client-config.js +351 -0
- package/dist/lib/idp-fetch.d.ts +14 -0
- package/dist/lib/idp-fetch.js +91 -0
- package/dist/lib/internal-api.d.ts +87 -0
- package/dist/lib/internal-api.js +122 -0
- package/dist/lib/jwt-decode-client.d.ts +10 -0
- package/dist/lib/jwt-decode-client.js +46 -0
- package/dist/lib/jwt-decode.d.ts +48 -0
- package/dist/lib/jwt-decode.js +57 -0
- package/dist/lib/nextauth-secret.d.ts +10 -0
- package/dist/lib/nextauth-secret.js +104 -0
- package/dist/lib/rate-limit-service.d.ts +23 -0
- package/dist/lib/rate-limit-service.js +6 -0
- package/dist/lib/redis.d.ts +5 -0
- package/dist/lib/redis.js +28 -0
- package/dist/lib/refresh-token-validator.d.ts +13 -0
- package/dist/lib/refresh-token-validator.js +117 -0
- package/dist/lib/roles.d.ts +145 -0
- package/dist/lib/roles.js +168 -0
- package/dist/lib/secret-validation.d.ts +4 -0
- package/dist/lib/secret-validation.js +14 -0
- package/dist/lib/session-store.d.ts +166 -0
- package/dist/lib/session-store.js +537 -0
- package/dist/lib/session.d.ts +21 -0
- package/dist/lib/session.js +26 -0
- package/dist/lib/site-logger.d.ts +214 -0
- package/dist/lib/site-logger.js +210 -0
- package/dist/lib/standardized-client-api.d.ts +161 -0
- package/dist/lib/standardized-client-api.js +786 -0
- package/dist/lib/startup-init.d.ts +40 -0
- package/dist/lib/startup-init.js +261 -0
- package/dist/lib/test-aware-get-token.d.ts +2 -0
- package/dist/lib/test-aware-get-token.js +81 -0
- package/dist/lib/token-expiry.d.ts +14 -0
- package/dist/lib/token-expiry.js +39 -0
- package/dist/lib/token-lifecycle.d.ts +52 -0
- package/dist/lib/token-lifecycle.js +398 -0
- package/dist/lib/types/api-responses.d.ts +128 -0
- package/dist/lib/types/api-responses.js +171 -0
- package/dist/lib/user-agent-parser.d.ts +50 -0
- package/dist/lib/user-agent-parser.js +220 -0
- package/dist/logging/api/admin-analytics.d.ts +3 -0
- package/dist/logging/api/admin-analytics.js +45 -0
- package/dist/logging/api/audit-log.d.ts +3 -0
- package/dist/logging/api/audit-log.js +52 -0
- package/dist/logging/components/AdminAnalyticsLayout.d.ts +10 -0
- package/dist/logging/components/AdminAnalyticsLayout.js +11 -0
- package/dist/logging/components/AuditLogViewer.d.ts +7 -0
- package/dist/logging/components/AuditLogViewer.js +51 -0
- package/dist/logging/components/ErrorMetricsCard.d.ts +7 -0
- package/dist/logging/components/ErrorMetricsCard.js +16 -0
- package/dist/logging/components/HealthMetricsCard.d.ts +7 -0
- package/dist/logging/components/HealthMetricsCard.js +19 -0
- package/dist/logging/hooks/useAdminAnalytics.d.ts +24 -0
- package/dist/logging/hooks/useAdminAnalytics.js +22 -0
- package/dist/logging/hooks/useAuditLog.d.ts +6 -0
- package/dist/logging/hooks/useAuditLog.js +25 -0
- package/dist/logging/hooks/useErrorMetrics.d.ts +6 -0
- package/dist/logging/hooks/useErrorMetrics.js +38 -0
- package/dist/logging/hooks/useHealthMetrics.d.ts +6 -0
- package/dist/logging/hooks/useHealthMetrics.js +41 -0
- package/dist/logging/index.d.ts +11 -0
- package/dist/logging/index.js +40 -0
- package/dist/logging/types/analytics.d.ts +68 -0
- package/dist/logging/types/analytics.js +3 -0
- package/dist/logging/types/audit.d.ts +29 -0
- package/dist/logging/types/audit.js +2 -0
- package/dist/logging/types/index.d.ts +2 -0
- package/dist/logging/types/index.js +19 -0
- package/dist/middleware/auth-decision.d.ts +33 -0
- package/dist/middleware/auth-decision.js +65 -0
- package/dist/middleware/create-middleware.d.ts +100 -0
- package/dist/middleware/create-middleware.js +445 -0
- package/dist/middleware/rbac-check.d.ts +44 -0
- package/dist/middleware/rbac-check.js +191 -0
- package/dist/middleware/twofa-presets.d.ts +134 -0
- package/dist/middleware/twofa-presets.js +175 -0
- package/dist/models/DecodedAccessToken.d.ts +17 -0
- package/dist/models/DecodedAccessToken.js +2 -0
- package/dist/models/SessionModel.d.ts +122 -0
- package/dist/models/SessionModel.js +136 -0
- package/dist/pages/admin-login/page.d.ts +31 -0
- package/dist/pages/admin-login/page.js +83 -0
- package/dist/pages/admin-roles/RolesAdminPage.d.ts +15 -0
- package/dist/pages/admin-roles/RolesAdminPage.js +78 -0
- package/dist/pages/admin-roles/index.d.ts +8 -0
- package/dist/pages/admin-roles/index.js +15 -0
- package/dist/pages/admin-roles/modals.d.ts +72 -0
- package/dist/pages/admin-roles/modals.js +154 -0
- package/dist/pages/client-admin/ClientSiteAdminPage.d.ts +79 -0
- package/dist/pages/client-admin/ClientSiteAdminPage.js +177 -0
- package/dist/pages/client-admin/index.d.ts +32 -0
- package/dist/pages/client-admin/index.js +37 -0
- package/dist/pages/login/page.d.ts +22 -0
- package/dist/pages/login/page.js +239 -0
- package/dist/pages/profile/EnhancedProfilePage.d.ts +13 -0
- package/dist/pages/profile/EnhancedProfilePage.js +150 -0
- package/dist/pages/profile/index.d.ts +8 -0
- package/dist/pages/profile/index.js +16 -0
- package/dist/pages/profile/page.d.ts +19 -0
- package/dist/pages/profile/page.js +47 -0
- package/dist/pages/profile/profile-patch.d.ts +1 -0
- package/dist/pages/profile/profile-patch.js +281 -0
- package/dist/pages/recovery/page.d.ts +1 -0
- package/dist/pages/recovery/page.js +142 -0
- package/dist/pages/roles/MyRolesPage.d.ts +24 -0
- package/dist/pages/roles/MyRolesPage.js +71 -0
- package/dist/pages/roles/components.d.ts +63 -0
- package/dist/pages/roles/components.js +108 -0
- package/dist/pages/roles/index.d.ts +8 -0
- package/dist/pages/roles/index.js +19 -0
- package/dist/pages/security/EnhancedSecurityPage.d.ts +14 -0
- package/dist/pages/security/EnhancedSecurityPage.js +248 -0
- package/dist/pages/security/index.d.ts +8 -0
- package/dist/pages/security/index.js +16 -0
- package/dist/pages/security/page.d.ts +21 -0
- package/dist/pages/security/page.js +212 -0
- package/dist/pages/security/security-patch.d.ts +1 -0
- package/dist/pages/security/security-patch.js +302 -0
- package/dist/pages/settings/EnhancedSettingsPage.d.ts +46 -0
- package/dist/pages/settings/EnhancedSettingsPage.js +231 -0
- package/dist/pages/settings/index.d.ts +8 -0
- package/dist/pages/settings/index.js +16 -0
- package/dist/pages/settings/page.d.ts +7 -0
- package/dist/pages/settings/page.js +26 -0
- package/dist/pages/showcase/ShowcasePage.d.ts +13 -0
- package/dist/pages/showcase/ShowcasePage.js +140 -0
- package/dist/pages/showcase/index.d.ts +12 -0
- package/dist/pages/showcase/index.js +17 -0
- package/dist/pages/test-env/EmergencyLogoutPage.d.ts +14 -0
- package/dist/pages/test-env/EmergencyLogoutPage.js +98 -0
- package/dist/pages/test-env/JwtInspectPage.d.ts +14 -0
- package/dist/pages/test-env/JwtInspectPage.js +114 -0
- package/dist/pages/test-env/RefreshTokenPage.d.ts +15 -0
- package/dist/pages/test-env/RefreshTokenPage.js +91 -0
- package/dist/pages/test-env/TestEnvPage.d.ts +13 -0
- package/dist/pages/test-env/TestEnvPage.js +49 -0
- package/dist/pages/test-env/index.d.ts +24 -0
- package/dist/pages/test-env/index.js +32 -0
- package/dist/pages/verify-code/page.d.ts +30 -0
- package/dist/pages/verify-code/page.js +408 -0
- package/dist/routes/account/index.d.ts +28 -0
- package/dist/routes/account/index.js +71 -0
- package/dist/routes/account/masked-info.d.ts +33 -0
- package/dist/routes/account/masked-info.js +39 -0
- package/dist/routes/account/send-code.d.ts +37 -0
- package/dist/routes/account/send-code.js +42 -0
- package/dist/routes/account/update-phone.d.ts +13 -0
- package/dist/routes/account/update-phone.js +17 -0
- package/dist/routes/account/verify-email.d.ts +38 -0
- package/dist/routes/account/verify-email.js +43 -0
- package/dist/routes/account/verify-sms.d.ts +38 -0
- package/dist/routes/account/verify-sms.js +43 -0
- package/dist/routes/auth/index.d.ts +19 -0
- package/dist/routes/auth/index.js +64 -0
- package/dist/routes/auth/logout.d.ts +31 -0
- package/dist/routes/auth/logout.js +113 -0
- package/dist/routes/auth/nextauth.d.ts +19 -0
- package/dist/routes/auth/nextauth.js +72 -0
- package/dist/routes/auth/refresh.d.ts +30 -0
- package/dist/routes/auth/refresh.js +51 -0
- package/dist/routes/auth/session.d.ts +72 -0
- package/dist/routes/auth/session.js +180 -0
- package/dist/routes/auth/settings.d.ts +25 -0
- package/dist/routes/auth/settings.js +55 -0
- package/dist/routes/auth/viability.d.ts +52 -0
- package/dist/routes/auth/viability.js +201 -0
- package/dist/routes/index.d.ts +12 -0
- package/dist/routes/index.js +54 -0
- package/dist/routes/session/index.d.ts +6 -0
- package/dist/routes/session/index.js +10 -0
- package/dist/routes/session/refresh-viability.d.ts +16 -0
- package/dist/routes/session/refresh-viability.js +20 -0
- package/dist/services/signalrActivityService.d.ts +44 -0
- package/dist/services/signalrActivityService.js +257 -0
- package/dist/stores/authStore.d.ts +154 -0
- package/dist/stores/authStore.js +1531 -0
- package/dist/theme/ThemeProvider.d.ts +14 -0
- package/dist/theme/ThemeProvider.js +28 -0
- package/dist/theme/default.d.ts +8 -0
- package/dist/theme/default.js +33 -0
- package/dist/theme/index.d.ts +15 -0
- package/dist/theme/index.js +25 -0
- package/dist/theme/types.d.ts +56 -0
- package/dist/theme/types.js +8 -0
- package/dist/theme/useTheme.d.ts +60 -0
- package/dist/theme/useTheme.js +63 -0
- package/dist/theme/utils.d.ts +13 -0
- package/dist/theme/utils.js +39 -0
- package/dist/types/api.d.ts +134 -0
- package/dist/types/api.js +44 -0
- package/dist/types/auth.d.ts +19 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/logging.d.ts +42 -0
- package/dist/types/logging.js +2 -0
- package/dist/types/recovery.d.ts +48 -0
- package/dist/types/recovery.js +2 -0
- package/dist/types/security.d.ts +1 -0
- package/dist/types/security.js +2 -0
- package/dist/utils/api.d.ts +85 -0
- package/dist/utils/api.js +287 -0
- package/dist/utils/circuitBreaker.d.ts +43 -0
- package/dist/utils/circuitBreaker.js +91 -0
- package/dist/utils/error-message.d.ts +1 -0
- package/dist/utils/error-message.js +103 -0
- package/dist/utils/layout/reservedSpace.d.ts +59 -0
- package/dist/utils/layout/reservedSpace.js +102 -0
- package/dist/utils/logout.d.ts +14 -0
- package/dist/utils/logout.js +32 -0
- package/dist/vibe/client.d.ts +261 -0
- package/dist/vibe/client.js +445 -0
- package/dist/vibe/errors.d.ts +83 -0
- package/dist/vibe/errors.js +146 -0
- package/dist/vibe/generic.d.ts +234 -0
- package/dist/vibe/generic.js +369 -0
- package/dist/vibe/hooks/index.d.ts +169 -0
- package/dist/vibe/hooks/index.js +252 -0
- package/dist/vibe/index.d.ts +23 -0
- package/dist/vibe/index.js +67 -0
- package/dist/vibe/sessions.d.ts +161 -0
- package/dist/vibe/sessions.js +391 -0
- package/dist/vibe/types.d.ts +353 -0
- package/dist/vibe/types.js +315 -0
- package/package.json +855 -0
- package/scripts/check-internal-url-usage.sh +73 -0
- package/scripts/dev-broker.ps1 +35 -0
- package/scripts/dev-local.ps1 +45 -0
- package/src/api/auth-handler.ts +550 -0
- package/src/api/index.ts +18 -0
- package/src/api-handlers/account/change-password.ts +145 -0
- package/src/api-handlers/account/masked-info.ts +45 -0
- package/src/api-handlers/account/profile.ts +80 -0
- package/src/api-handlers/account/recovery/initiate.ts +23 -0
- package/src/api-handlers/account/recovery/send-code.ts +25 -0
- package/src/api-handlers/account/recovery/verify-code.ts +25 -0
- package/src/api-handlers/account/reset-password.ts +23 -0
- package/src/api-handlers/account/send-code.ts +76 -0
- package/src/api-handlers/account/update-phone.ts +79 -0
- package/src/api-handlers/account/validate-password.ts +118 -0
- package/src/api-handlers/account/verify-email.ts +125 -0
- package/src/api-handlers/account/verify-sms.ts +125 -0
- package/src/api-handlers/admin/analytics.ts +445 -0
- package/src/api-handlers/admin/audit.ts +225 -0
- package/src/api-handlers/admin/index.ts +59 -0
- package/src/api-handlers/admin/redis-sessions.ts +253 -0
- package/src/api-handlers/admin/sessions.ts +320 -0
- package/src/api-handlers/admin/site-logs.ts +367 -0
- package/src/api-handlers/admin/users.ts +244 -0
- package/src/api-handlers/admin/vibe-data.ts +326 -0
- package/src/api-handlers/anon/preferences.ts +123 -0
- package/src/api-handlers/auth/jwks.ts +20 -0
- package/src/api-handlers/auth/login.ts +240 -0
- package/src/api-handlers/auth/refresh.ts +687 -0
- package/src/api-handlers/auth/signout.ts +212 -0
- package/src/api-handlers/auth/status.ts +23 -0
- package/src/api-handlers/auth/update-session.ts +125 -0
- package/src/api-handlers/auth/validate.ts +44 -0
- package/src/api-handlers/auth/verify-code.ts +129 -0
- package/src/api-handlers/session/refresh-viability.ts +36 -0
- package/src/api-handlers/session/viability.ts +166 -0
- package/src/api-handlers/test/force-expire.ts +67 -0
- package/src/auth/auth-decision.ts +230 -0
- package/src/auth/auth-options.ts +237 -0
- package/src/auth/callbacks/index.ts +7 -0
- package/src/auth/callbacks/jwt.ts +382 -0
- package/src/auth/callbacks/session.ts +243 -0
- package/src/auth/callbacks/signin.ts +56 -0
- package/src/auth/events/index.ts +5 -0
- package/src/auth/events/signout.ts +33 -0
- package/src/auth/providers/credentials.ts +256 -0
- package/src/auth/providers/index.ts +6 -0
- package/src/auth/providers/oauth.ts +114 -0
- package/src/auth/route-config.ts +220 -0
- package/src/auth/types/auth-types.ts +555 -0
- package/src/auth/types/index.ts +7 -0
- package/src/auth/unauthenticated-routes.ts +3 -0
- package/src/auth/utils/idp-client.ts +444 -0
- package/src/auth/utils/index.ts +6 -0
- package/src/auth/utils/token-utils.ts +244 -0
- package/src/client/AuthContext.tsx +140 -0
- package/src/client/fetch-with-auth.ts +48 -0
- package/src/client/fetchWithSession.ts +21 -0
- package/src/client/index.ts +13 -0
- package/src/client/useAnonSession.ts +131 -0
- package/src/components/SessionSync.tsx +137 -0
- package/src/components/SignalRHealthCheck.tsx +131 -0
- package/src/components/account/UserAvatarMenu.tsx +217 -0
- package/src/components/account/index.ts +8 -0
- package/src/components/admin/AlertSettingsTab.tsx +728 -0
- package/src/components/admin/AnalyticsTab.tsx +703 -0
- package/src/components/admin/DataBrowserTab.tsx +505 -0
- package/src/components/admin/LoggingSettingsTab.tsx +665 -0
- package/src/components/admin/SessionsTab.tsx +414 -0
- package/src/components/admin/StatsTab.tsx +379 -0
- package/src/components/admin/VibeAdminContext.tsx +87 -0
- package/src/components/admin/VibeAdminLayout.tsx +185 -0
- package/src/components/admin/index.ts +59 -0
- package/src/components/auth/FederatedAuthSection.tsx +95 -0
- package/src/components/auth/ModeAwareLoginPage.tsx +135 -0
- package/src/components/auth/ModeAwareSignupPage.tsx +267 -0
- package/src/components/auth/TraditionalAuthSection.tsx +99 -0
- package/src/components/recovery/CompleteStep.tsx +36 -0
- package/src/components/recovery/InitiateRecoveryStep.tsx +68 -0
- package/src/components/recovery/SelectMethodStep.tsx +73 -0
- package/src/components/recovery/SetPasswordStep.tsx +97 -0
- package/src/components/recovery/VerifyCodeStep.tsx +90 -0
- package/src/components/reserved/ReservedRecoveryWarning.tsx +160 -0
- package/src/components/reserved/ReservedStatusBox.tsx +118 -0
- package/src/components/ui/BetaBadge.tsx +58 -0
- package/src/components/ui/Footer.tsx +93 -0
- package/src/config/env.ts +57 -0
- package/src/config/logger.ts +62 -0
- package/src/config/logging-config.ts +82 -0
- package/src/config/unauthenticated-routes.ts +19 -0
- package/src/config/vibe-log-transport.ts +250 -0
- package/src/edge/internal-api-url.ts +65 -0
- package/src/edge/middleware.ts +42 -0
- package/src/hooks/useAuth.ts +115 -0
- package/src/hooks/useAuthSettings.ts +97 -0
- package/src/hooks/useAvailableProviders.ts +118 -0
- package/src/hooks/usePasswordValidation.ts +127 -0
- package/src/hooks/useProfile.ts +75 -0
- package/src/hooks/usePublicAuthSettings.ts +149 -0
- package/src/hooks/useSessionExpiration.ts +102 -0
- package/src/hooks/useViabilitySession.ts +335 -0
- package/src/index.ts +63 -0
- package/src/lib/anon-session.ts +213 -0
- package/src/lib/api-handler.ts +625 -0
- package/src/lib/app-slug.ts +178 -0
- package/src/lib/demo-mode.ts +13 -0
- package/src/lib/geolocation.ts +265 -0
- package/src/lib/idp-client-config.ts +442 -0
- package/src/lib/idp-fetch.ts +101 -0
- package/src/lib/internal-api.ts +171 -0
- package/src/lib/jwt-decode-client.ts +45 -0
- package/src/lib/jwt-decode.ts +83 -0
- package/src/lib/nextauth-secret.ts +126 -0
- package/src/lib/rate-limit-service.ts +9 -0
- package/src/lib/redis.ts +27 -0
- package/src/lib/refresh-token-validator.ts +64 -0
- package/src/lib/roles.ts +177 -0
- package/src/lib/secret-validation.ts +8 -0
- package/src/lib/session-store.ts +637 -0
- package/src/lib/session.ts +34 -0
- package/src/lib/site-logger.ts +245 -0
- package/src/lib/standardized-client-api.ts +896 -0
- package/src/lib/startup-init.ts +247 -0
- package/src/lib/test-aware-get-token.ts +30 -0
- package/src/lib/token-expiry.ts +40 -0
- package/src/lib/token-lifecycle.ts +477 -0
- package/src/lib/types/api-responses.ts +336 -0
- package/src/lib/user-agent-parser.ts +252 -0
- package/src/logging/api/admin-analytics.ts +51 -0
- package/src/logging/api/audit-log.ts +53 -0
- package/src/logging/components/AdminAnalyticsLayout.tsx +49 -0
- package/src/logging/components/AuditLogViewer.tsx +125 -0
- package/src/logging/components/ErrorMetricsCard.tsx +98 -0
- package/src/logging/components/HealthMetricsCard.tsx +70 -0
- package/src/logging/hooks/useAdminAnalytics.ts +22 -0
- package/src/logging/hooks/useAuditLog.ts +24 -0
- package/src/logging/hooks/useErrorMetrics.ts +40 -0
- package/src/logging/hooks/useHealthMetrics.ts +44 -0
- package/src/logging/index.ts +18 -0
- package/src/logging/types/analytics.ts +81 -0
- package/src/logging/types/audit.ts +31 -0
- package/src/logging/types/index.ts +3 -0
- package/src/middleware/auth-decision.ts +43 -0
- package/src/middleware/create-middleware.ts +626 -0
- package/src/middleware/rbac-check.ts +244 -0
- package/src/middleware/twofa-presets.ts +224 -0
- package/src/models/DecodedAccessToken.ts +17 -0
- package/src/models/SessionModel.ts +258 -0
- package/src/pages/admin-login/page.tsx +229 -0
- package/src/pages/admin-roles/RolesAdminPage.tsx +357 -0
- package/src/pages/admin-roles/index.ts +9 -0
- package/src/pages/admin-roles/modals.tsx +469 -0
- package/src/pages/client-admin/ClientSiteAdminPage.tsx +380 -0
- package/src/pages/client-admin/index.ts +33 -0
- package/src/pages/login/page.tsx +463 -0
- package/src/pages/profile/EnhancedProfilePage.tsx +479 -0
- package/src/pages/profile/index.ts +9 -0
- package/src/pages/profile/page.tsx +166 -0
- package/src/pages/recovery/page.tsx +234 -0
- package/src/pages/roles/MyRolesPage.tsx +211 -0
- package/src/pages/roles/components.tsx +294 -0
- package/src/pages/roles/index.ts +17 -0
- package/src/pages/security/EnhancedSecurityPage.tsx +574 -0
- package/src/pages/security/index.ts +9 -0
- package/src/pages/security/page.tsx +507 -0
- package/src/pages/settings/EnhancedSettingsPage.tsx +642 -0
- package/src/pages/settings/index.ts +9 -0
- package/src/pages/settings/page.tsx +47 -0
- package/src/pages/showcase/ShowcasePage.tsx +530 -0
- package/src/pages/showcase/index.ts +13 -0
- package/src/pages/test-env/EmergencyLogoutPage.tsx +179 -0
- package/src/pages/test-env/JwtInspectPage.tsx +418 -0
- package/src/pages/test-env/RefreshTokenPage.tsx +155 -0
- package/src/pages/test-env/TestEnvPage.tsx +116 -0
- package/src/pages/test-env/index.ts +25 -0
- package/src/pages/verify-code/page.tsx +648 -0
- package/src/routes/account/index.ts +32 -0
- package/src/routes/account/masked-info.ts +37 -0
- package/src/routes/account/send-code.ts +40 -0
- package/src/routes/account/update-phone.ts +13 -0
- package/src/routes/account/verify-email.ts +41 -0
- package/src/routes/account/verify-sms.ts +41 -0
- package/src/routes/auth/index.ts +23 -0
- package/src/routes/auth/logout.ts +127 -0
- package/src/routes/auth/nextauth.ts +71 -0
- package/src/routes/auth/refresh.ts +54 -0
- package/src/routes/auth/session.ts +193 -0
- package/src/routes/auth/settings.ts +75 -0
- package/src/routes/auth/viability.ts +220 -0
- package/src/routes/index.ts +18 -0
- package/src/routes/session/index.ts +7 -0
- package/src/routes/session/refresh-viability.ts +17 -0
- package/src/services/signalrActivityService.ts +258 -0
- package/src/stores/authStore.ts +1904 -0
- package/src/templates/instrumentation.ts +41 -0
- package/src/theme/ThemeProvider.tsx +39 -0
- package/src/theme/default.ts +33 -0
- package/src/theme/index.ts +31 -0
- package/src/theme/types.ts +69 -0
- package/src/theme/useTheme.ts +57 -0
- package/src/theme/utils.ts +40 -0
- package/src/types/api.ts +13 -0
- package/src/types/auth.d.ts +15 -0
- package/src/types/auth.ts +22 -0
- package/src/types/logging.ts +11 -0
- package/src/types/next-auth.d.ts +15 -0
- package/src/types/recovery.ts +54 -0
- package/src/types/security.ts +1 -0
- package/src/utils/api.ts +353 -0
- package/src/utils/circuitBreaker.ts +40 -0
- package/src/utils/error-message.ts +108 -0
- package/src/utils/layout/reservedSpace.ts +124 -0
- package/src/utils/logout.ts +30 -0
- package/src/vibe/client.ts +590 -0
- package/src/vibe/errors.ts +185 -0
- package/src/vibe/generic.ts +429 -0
- package/src/vibe/hooks/index.ts +367 -0
- package/src/vibe/index.ts +121 -0
- package/src/vibe/sessions.ts +551 -0
- package/src/vibe/types.ts +577 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vibe Role Constants and Utilities
|
|
4
|
+
*
|
|
5
|
+
* Centralized role definitions for consistent authorization across the stack.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ROLE_HIERARCHY = exports.CLIENT_ADMIN_ROLES = exports.PLATFORM_ADMIN_ROLES = exports.ADMIN_ROLES = exports.VibeRoles = exports.AppRoles = exports.GlobalRoles = void 0;
|
|
11
|
+
exports.hasRole = hasRole;
|
|
12
|
+
exports.hasAnyRole = hasAnyRole;
|
|
13
|
+
exports.hasAllRoles = hasAllRoles;
|
|
14
|
+
exports.isAdmin = isAdmin;
|
|
15
|
+
exports.isPlatformAdmin = isPlatformAdmin;
|
|
16
|
+
exports.isClientAdmin = isClientAdmin;
|
|
17
|
+
exports.getHighestRoleLevel = getHighestRoleLevel;
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Role Constants
|
|
20
|
+
// =============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Global platform roles (IDP-level)
|
|
23
|
+
* These roles are managed at the IDP and grant cross-client access.
|
|
24
|
+
*/
|
|
25
|
+
exports.GlobalRoles = {
|
|
26
|
+
/** Platform super admin - full access to everything */
|
|
27
|
+
PAYEZ_ADMIN: 'payez_admin',
|
|
28
|
+
/** IDP client admin - manages IDP client configuration */
|
|
29
|
+
IDP_CLIENT_ADMIN: 'idp_client_admin',
|
|
30
|
+
/** Vibe platform admin - manages Vibe infrastructure globally */
|
|
31
|
+
VIBE_APP_ADMIN: 'vibe_app_admin',
|
|
32
|
+
/** Vibe client admin - manages Vibe for a specific tenant */
|
|
33
|
+
VIBE_CLIENT_ADMIN: 'vibe_client_admin',
|
|
34
|
+
/** Vibe agents user - AI agents operating via CLI/automation */
|
|
35
|
+
VIBE_AGENTS_USER: 'vibe_agents_user',
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Application-level roles (per-client)
|
|
39
|
+
* These roles are scoped to a specific client/tenant.
|
|
40
|
+
*/
|
|
41
|
+
exports.AppRoles = {
|
|
42
|
+
/** Standard authenticated user */
|
|
43
|
+
VIBE_APP_USER: 'vibe_app_user',
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* All Vibe roles combined
|
|
47
|
+
*/
|
|
48
|
+
exports.VibeRoles = {
|
|
49
|
+
...exports.GlobalRoles,
|
|
50
|
+
...exports.AppRoles,
|
|
51
|
+
};
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// Role Groups
|
|
54
|
+
// =============================================================================
|
|
55
|
+
/**
|
|
56
|
+
* Roles that grant admin access to the /admin section.
|
|
57
|
+
* Any of these roles allows access to admin pages.
|
|
58
|
+
*/
|
|
59
|
+
exports.ADMIN_ROLES = [
|
|
60
|
+
exports.GlobalRoles.PAYEZ_ADMIN,
|
|
61
|
+
exports.GlobalRoles.VIBE_APP_ADMIN,
|
|
62
|
+
exports.GlobalRoles.VIBE_CLIENT_ADMIN,
|
|
63
|
+
exports.GlobalRoles.IDP_CLIENT_ADMIN,
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
* Roles that grant platform-wide admin access (not client-scoped).
|
|
67
|
+
* These can access/modify any client's data.
|
|
68
|
+
*/
|
|
69
|
+
exports.PLATFORM_ADMIN_ROLES = [
|
|
70
|
+
exports.GlobalRoles.PAYEZ_ADMIN,
|
|
71
|
+
exports.GlobalRoles.VIBE_APP_ADMIN,
|
|
72
|
+
];
|
|
73
|
+
/**
|
|
74
|
+
* Roles that grant client-scoped admin access.
|
|
75
|
+
* These can only access their own client's data.
|
|
76
|
+
*/
|
|
77
|
+
exports.CLIENT_ADMIN_ROLES = [
|
|
78
|
+
exports.GlobalRoles.VIBE_CLIENT_ADMIN,
|
|
79
|
+
exports.GlobalRoles.IDP_CLIENT_ADMIN,
|
|
80
|
+
];
|
|
81
|
+
// =============================================================================
|
|
82
|
+
// Role Checking Utilities
|
|
83
|
+
// =============================================================================
|
|
84
|
+
/**
|
|
85
|
+
* Check if user has a specific role
|
|
86
|
+
*/
|
|
87
|
+
function hasRole(userRoles, role) {
|
|
88
|
+
if (!userRoles || !Array.isArray(userRoles))
|
|
89
|
+
return false;
|
|
90
|
+
return userRoles.includes(role);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if user has any of the specified roles
|
|
94
|
+
*/
|
|
95
|
+
function hasAnyRole(userRoles, roles) {
|
|
96
|
+
if (!userRoles || !Array.isArray(userRoles))
|
|
97
|
+
return false;
|
|
98
|
+
return roles.some(role => userRoles.includes(role));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Check if user has all of the specified roles
|
|
102
|
+
*/
|
|
103
|
+
function hasAllRoles(userRoles, roles) {
|
|
104
|
+
if (!userRoles || !Array.isArray(userRoles))
|
|
105
|
+
return false;
|
|
106
|
+
return roles.every(role => userRoles.includes(role));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if user has admin access (any admin role)
|
|
110
|
+
*/
|
|
111
|
+
function isAdmin(userRoles) {
|
|
112
|
+
return hasAnyRole(userRoles, exports.ADMIN_ROLES);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if user has platform-wide admin access
|
|
116
|
+
*/
|
|
117
|
+
function isPlatformAdmin(userRoles) {
|
|
118
|
+
return hasAnyRole(userRoles, exports.PLATFORM_ADMIN_ROLES);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if user is a client-scoped admin (not platform admin)
|
|
122
|
+
*/
|
|
123
|
+
function isClientAdmin(userRoles) {
|
|
124
|
+
return hasAnyRole(userRoles, exports.CLIENT_ADMIN_ROLES) && !isPlatformAdmin(userRoles);
|
|
125
|
+
}
|
|
126
|
+
// =============================================================================
|
|
127
|
+
// Role Hierarchy
|
|
128
|
+
// =============================================================================
|
|
129
|
+
/**
|
|
130
|
+
* Role hierarchy (higher index = more access)
|
|
131
|
+
*
|
|
132
|
+
* payez_admin (4) - IDP super admin, can do anything
|
|
133
|
+
* vibe_app_admin (3) - Platform admin, manages Vibe globally
|
|
134
|
+
* vibe_client_admin (2) - Client admin, manages their own tenant
|
|
135
|
+
* idp_client_admin (2) - IDP client admin, manages IDP config
|
|
136
|
+
* vibe_app_user (1) - Regular authenticated user
|
|
137
|
+
* (anonymous) (0) - No authentication
|
|
138
|
+
*/
|
|
139
|
+
exports.ROLE_HIERARCHY = {
|
|
140
|
+
[exports.GlobalRoles.PAYEZ_ADMIN]: 4,
|
|
141
|
+
[exports.GlobalRoles.VIBE_APP_ADMIN]: 3,
|
|
142
|
+
[exports.GlobalRoles.VIBE_CLIENT_ADMIN]: 2,
|
|
143
|
+
[exports.GlobalRoles.IDP_CLIENT_ADMIN]: 2,
|
|
144
|
+
[exports.AppRoles.VIBE_APP_USER]: 1,
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Get the highest role level for a user
|
|
148
|
+
*/
|
|
149
|
+
function getHighestRoleLevel(userRoles) {
|
|
150
|
+
if (!userRoles || !Array.isArray(userRoles))
|
|
151
|
+
return 0;
|
|
152
|
+
return Math.max(0, ...userRoles.map(role => exports.ROLE_HIERARCHY[role] || 0));
|
|
153
|
+
}
|
|
154
|
+
exports.default = {
|
|
155
|
+
VibeRoles: exports.VibeRoles,
|
|
156
|
+
GlobalRoles: exports.GlobalRoles,
|
|
157
|
+
AppRoles: exports.AppRoles,
|
|
158
|
+
ADMIN_ROLES: exports.ADMIN_ROLES,
|
|
159
|
+
PLATFORM_ADMIN_ROLES: exports.PLATFORM_ADMIN_ROLES,
|
|
160
|
+
CLIENT_ADMIN_ROLES: exports.CLIENT_ADMIN_ROLES,
|
|
161
|
+
hasRole,
|
|
162
|
+
hasAnyRole,
|
|
163
|
+
hasAllRoles,
|
|
164
|
+
isAdmin,
|
|
165
|
+
isPlatformAdmin,
|
|
166
|
+
isClientAdmin,
|
|
167
|
+
getHighestRoleLevel,
|
|
168
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateNextAuthSecret = validateNextAuthSecret;
|
|
4
|
+
function validateNextAuthSecret(secret) {
|
|
5
|
+
if (!secret || typeof secret !== 'string')
|
|
6
|
+
return { valid: false, reason: 'missing' };
|
|
7
|
+
if (secret.length < 32)
|
|
8
|
+
return { valid: false, reason: 'too_short' };
|
|
9
|
+
const classes = [/[a-z]/, /[A-Z]/, /[0-9]/, /[^a-zA-Z0-9]/];
|
|
10
|
+
const score = classes.reduce((acc, re) => acc + (re.test(secret) ? 1 : 0), 0);
|
|
11
|
+
if (score < 3)
|
|
12
|
+
return { valid: false, reason: 'weak' };
|
|
13
|
+
return { valid: true };
|
|
14
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Store for `@payez/next-mvp` using ioredis
|
|
3
|
+
*
|
|
4
|
+
* This module provides a Redis-backed session store that is compatible with the
|
|
5
|
+
* `ioredis` client. It handles the creation, retrieval, and deletion of
|
|
6
|
+
* session data, which is the single source of truth for authentication.
|
|
7
|
+
*
|
|
8
|
+
* Includes advanced distributed refresh coordination with version control.
|
|
9
|
+
*/
|
|
10
|
+
import { SessionData } from '../models/SessionModel';
|
|
11
|
+
export type { SessionData } from '../models/SessionModel';
|
|
12
|
+
export interface RefreshLockInfo {
|
|
13
|
+
sessionToken: string;
|
|
14
|
+
acquiredAt: number;
|
|
15
|
+
acquiredBy: string;
|
|
16
|
+
lockVersion: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generates a new session token.
|
|
20
|
+
* @returns A new session token string.
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateSessionToken(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new session in Redis.
|
|
25
|
+
*
|
|
26
|
+
* @param data The session data to store.
|
|
27
|
+
* @returns The generated session token (redisSessionId).
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSession(data: SessionData): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Retrieves a session from Redis.
|
|
32
|
+
*
|
|
33
|
+
* @param sessionToken The session token (redisSessionId) to look up.
|
|
34
|
+
* @returns The session data, or null if not found.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getSession(sessionToken: string): Promise<SessionData | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Retrieves a session along with a version identifier for optimistic locking.
|
|
39
|
+
* @param sessionToken The session token to look up.
|
|
40
|
+
* @returns An object with session and version, or null if not found.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getSessionWithVersion(sessionToken: string): Promise<{
|
|
43
|
+
session: SessionData;
|
|
44
|
+
version: string;
|
|
45
|
+
} | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Checks if the access token in a session is still fresh (not expired).
|
|
48
|
+
* @param sessionToken The session token to check.
|
|
49
|
+
* @param currentAccessToken The current access token to compare.
|
|
50
|
+
* @param currentVersion Optional version to check for changes.
|
|
51
|
+
* @returns Object with freshness status and latest token info.
|
|
52
|
+
*/
|
|
53
|
+
export declare function isAccessTokenFresh(sessionToken: string, currentAccessToken: string, currentVersion?: string): Promise<{
|
|
54
|
+
isFresh: boolean;
|
|
55
|
+
latestAccessToken?: string;
|
|
56
|
+
latestVersion?: string;
|
|
57
|
+
versionChanged: boolean;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Deletes a session from Redis.
|
|
61
|
+
* @param sessionToken The session token to delete.
|
|
62
|
+
*/
|
|
63
|
+
export declare function deleteSession(sessionToken: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Sets a session directly (for testing or migrations).
|
|
66
|
+
* @param sessionToken The session token.
|
|
67
|
+
* @param data The session data.
|
|
68
|
+
*/
|
|
69
|
+
export declare function setSession(sessionToken: string, data: SessionData): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Updates tokens within an existing session.
|
|
72
|
+
* @param sessionToken The session token to update.
|
|
73
|
+
* @param updates Partial session data to update.
|
|
74
|
+
* @returns The updated session data, or null if the session was not found.
|
|
75
|
+
*/
|
|
76
|
+
export declare function updateSession(sessionToken: string, updates: Partial<SessionData>): Promise<SessionData | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Transitions a session to a MFA-completed state.
|
|
79
|
+
* @param sessionToken The session token to update.
|
|
80
|
+
* @param tokens The new tokens received after MFA completion.
|
|
81
|
+
* @param mfaMethod The MFA method used (email, sms, totp) - required for token refresh.
|
|
82
|
+
* @returns The updated session data.
|
|
83
|
+
*/
|
|
84
|
+
export declare function transitionTo2FASession(sessionToken: string, tokens: {
|
|
85
|
+
accessToken?: string;
|
|
86
|
+
refreshToken?: string;
|
|
87
|
+
accessTokenExpires?: number;
|
|
88
|
+
refreshTokenExpires?: number;
|
|
89
|
+
idpAccessToken?: string;
|
|
90
|
+
idpRefreshToken?: string;
|
|
91
|
+
idpAccessTokenExpires?: number;
|
|
92
|
+
idpRefreshTokenExpires?: number;
|
|
93
|
+
}, mfaMethod?: 'email' | 'sms' | 'totp'): Promise<SessionData | null>;
|
|
94
|
+
/**
|
|
95
|
+
* Updates IDP tokens and their expiries in an existing session.
|
|
96
|
+
* @param sessionToken The session token to update.
|
|
97
|
+
* @param idpAccessToken The new IDP access token.
|
|
98
|
+
* @param idpRefreshToken The new IDP refresh token.
|
|
99
|
+
* @param idpAccessTokenExpires The access token expiry timestamp.
|
|
100
|
+
* @param idpRefreshTokenExpires The refresh token expiry timestamp (optional).
|
|
101
|
+
* @returns The updated session data.
|
|
102
|
+
*/
|
|
103
|
+
export declare function updateTokens(sessionToken: string, idpAccessToken: string, idpRefreshToken: string, idpAccessTokenExpires: number, idpRefreshTokenExpires?: number): Promise<SessionData | null>;
|
|
104
|
+
/**
|
|
105
|
+
* Marks a session as having completed MFA.
|
|
106
|
+
* @param sessionToken The session token to update.
|
|
107
|
+
* @returns The updated session data.
|
|
108
|
+
*/
|
|
109
|
+
export declare function mark2FAComplete(sessionToken: string): Promise<SessionData | null>;
|
|
110
|
+
/**
|
|
111
|
+
* Checks if MFA is complete for a session.
|
|
112
|
+
* @param sessionToken The session token.
|
|
113
|
+
* @returns True if MFA is complete.
|
|
114
|
+
*/
|
|
115
|
+
export declare function is2FAComplete(sessionToken: string): Promise<boolean>;
|
|
116
|
+
/**
|
|
117
|
+
* Gets IDP tokens from a session.
|
|
118
|
+
* @param sessionToken The session token.
|
|
119
|
+
* @returns The tokens or null if session not found.
|
|
120
|
+
*/
|
|
121
|
+
export declare function getTokens(sessionToken: string): Promise<{
|
|
122
|
+
accessToken: string;
|
|
123
|
+
refreshToken: string;
|
|
124
|
+
idpAccessToken: string;
|
|
125
|
+
idpRefreshToken: string;
|
|
126
|
+
} | null>;
|
|
127
|
+
/**
|
|
128
|
+
* Refreshes a JWT session (placeholder for compatibility).
|
|
129
|
+
* @param sessionToken The session token.
|
|
130
|
+
* @returns The session data or null.
|
|
131
|
+
*/
|
|
132
|
+
export declare function refreshJWTSession(sessionToken: string): Promise<SessionData | null>;
|
|
133
|
+
/**
|
|
134
|
+
* Clears all sessions (for testing only).
|
|
135
|
+
*/
|
|
136
|
+
export declare function clearAllSessions(): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Lists all sessions (for testing/debugging only).
|
|
139
|
+
* @returns An empty array (placeholder).
|
|
140
|
+
*/
|
|
141
|
+
export declare function listAllSessions(): Promise<string[]>;
|
|
142
|
+
/**
|
|
143
|
+
* Attempt to acquire a refresh lock for a session
|
|
144
|
+
* Uses Redis SET with NX (Not eXists) for atomic lock acquisition
|
|
145
|
+
*/
|
|
146
|
+
export declare function acquireRefreshLock(sessionToken: string, requestId: string, maxWaitMs?: number): Promise<{
|
|
147
|
+
acquired: boolean;
|
|
148
|
+
lockInfo?: RefreshLockInfo;
|
|
149
|
+
}>;
|
|
150
|
+
/**
|
|
151
|
+
* Release a refresh lock
|
|
152
|
+
* Uses Lua script to ensure atomic validation and release
|
|
153
|
+
*/
|
|
154
|
+
export declare function releaseRefreshLock(sessionToken: string, requestId: string, lockVersion?: number): Promise<boolean>;
|
|
155
|
+
/**
|
|
156
|
+
* Check if a refresh lock exists for a session
|
|
157
|
+
*/
|
|
158
|
+
export declare function checkRefreshLock(sessionToken: string): Promise<RefreshLockInfo | null>;
|
|
159
|
+
/**
|
|
160
|
+
* Simple check if a refresh is currently in progress for a session
|
|
161
|
+
*/
|
|
162
|
+
export declare function isRefreshInProgress(sessionToken: string): Promise<boolean>;
|
|
163
|
+
/**
|
|
164
|
+
* Force cleanup of expired or orphaned refresh locks
|
|
165
|
+
*/
|
|
166
|
+
export declare function cleanupRefreshLocks(): Promise<number>;
|