@antelopejs/dms 0.15.0 → 0.16.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/CHANGELOG.md +47 -0
- package/README.md +36 -26
- package/bin/control/base.mjs +9 -4
- package/bin/control/browser-client.mjs +24 -5
- package/bin/control/browser-wire.mjs +41 -0
- package/bin/control/browser-wire.test.mjs +96 -0
- package/bin/control/browser.mjs +78 -27
- package/bin/control/commands-stack.mjs +58 -8
- package/bin/control/commands-verify.mjs +47 -1
- package/bin/control/doctor.mjs +49 -4
- package/bin/control/failure.mjs +9 -0
- package/bin/control/journey.mjs +163 -30
- package/bin/control/journey.test.mjs +61 -0
- package/bin/control/json.mjs +229 -0
- package/bin/control/json.test.mjs +130 -0
- package/bin/control/mail.mjs +57 -7
- package/bin/control/mail.test.mjs +55 -0
- package/bin/control/mongo.mjs +205 -27
- package/bin/control/mongo.test.mjs +298 -0
- package/bin/control/options.mjs +33 -0
- package/bin/control/processes.mjs +24 -2
- package/bin/control/renderer.mjs +39 -0
- package/bin/control/renderer.test.mjs +324 -0
- package/bin/control/run-state.mjs +119 -6
- package/bin/control/run-state.test.mjs +171 -0
- package/bin/control/session.mjs +31 -14
- package/bin/control/stack.mjs +96 -24
- package/bin/control/tab.mjs +117 -18
- package/bin/control/verify/behaviour.mjs +44 -6
- package/bin/control/verify/behaviour.test.mjs +130 -22
- package/bin/control/verify/decode.mjs +220 -0
- package/bin/control/verify/decode.test.mjs +245 -0
- package/bin/control/verify/doors.mjs +1 -1
- package/bin/control/verify/doors.test.mjs +40 -0
- package/bin/control/verify/emit.mjs +135 -9
- package/bin/control/verify/formal.mjs +61 -10
- package/bin/control/verify/formal.test.mjs +19 -3
- package/bin/control/verify/judgement.mjs +22 -3
- package/bin/control/verify/map.mjs +25 -5
- package/bin/control/verify/publish.mjs +20 -14
- package/bin/control/verify/seeded.mjs +65 -16
- package/bin/control/verify/skill.mjs +27 -6
- package/bin/control/verify/types.mjs +29 -0
- package/bin/control/verify/verdict.mjs +72 -7
- package/bin/dms-control.mjs +8 -28
- package/checks/api-error-presentation.d.mts +61 -0
- package/dist/attachments/access.js +1 -1
- package/dist/attachments/access.js.map +1 -1
- package/dist/attachments/fields.d.ts +2 -2
- package/dist/attachments/fields.js +26 -13
- package/dist/attachments/fields.js.map +1 -1
- package/dist/attachments/index.d.ts +1 -0
- package/dist/attachments/index.js +1 -0
- package/dist/attachments/index.js.map +1 -1
- package/dist/attachments/read.js.map +1 -1
- package/dist/attachments/save.d.ts +1 -1
- package/dist/attachments/save.js +49 -17
- package/dist/attachments/save.js.map +1 -1
- package/dist/attachments/table-view.d.ts +1 -2
- package/dist/attachments/table-view.js +23 -13
- package/dist/attachments/table-view.js.map +1 -1
- package/dist/automation/events.d.ts +10 -10
- package/dist/automation/index.js +3 -4
- package/dist/automation/index.js.map +1 -1
- package/dist/automation/send-notification.d.ts +2 -2
- package/dist/automation/send-notification.js +4 -6
- package/dist/automation/send-notification.js.map +1 -1
- package/dist/config/internal/state.d.ts +7 -0
- package/dist/config/internal/state.js +9 -0
- package/dist/config/internal/state.js.map +1 -1
- package/dist/config/startup-config.d.ts +1 -0
- package/dist/config/startup-config.js +11 -0
- package/dist/config/startup-config.js.map +1 -1
- package/dist/crons/cleanup-user-invites.js.map +1 -1
- package/dist/crons/sweep-expired-sessions.js.map +1 -1
- package/dist/crons/sweep-stale-exports.js.map +1 -1
- package/dist/db/guard-row.d.ts +2 -3
- package/dist/db/guard-row.js +1 -2
- package/dist/db/guard-row.js.map +1 -1
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.js +1 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/models/attachments.model.d.ts +7 -5
- package/dist/db/models/index.d.ts +1 -0
- package/dist/db/models/index.js +1 -0
- package/dist/db/models/index.js.map +1 -1
- package/dist/db/models/setupToken.model.d.ts +31 -0
- package/dist/db/models/setupToken.model.js +62 -0
- package/dist/db/models/setupToken.model.js.map +1 -0
- package/dist/db/models/signInAttempts.model.d.ts +7 -5
- package/dist/db/models/systemState.model.d.ts +7 -5
- package/dist/db/models/userEmailChanges.model.d.ts +7 -5
- package/dist/db/models/userKnownDevices.model.d.ts +7 -5
- package/dist/db/models/userNotificationPreferences.model.d.ts +7 -5
- package/dist/db/models/userNotifications.model.d.ts +9 -6
- package/dist/db/models/userNotifications.model.js.map +1 -1
- package/dist/db/setup-token.d.ts +2 -0
- package/dist/db/setup-token.js +28 -0
- package/dist/db/setup-token.js.map +1 -0
- package/dist/db/tables/index.d.ts +1 -0
- package/dist/db/tables/index.js +1 -0
- package/dist/db/tables/index.js.map +1 -1
- package/dist/db/tables/setupToken.table.d.ts +7 -0
- package/dist/db/tables/setupToken.table.js +34 -0
- package/dist/db/tables/setupToken.table.js.map +1 -0
- package/dist/dev/module-update-notifications.js.map +1 -1
- package/dist/hooks/internal/sign-in-monitor.js +6 -6
- package/dist/hooks/internal/sign-in-monitor.js.map +1 -1
- package/dist/implementations/dms/page/controller.d.ts +2 -2
- package/dist/implementations/dms/page/controller.js +3 -1
- package/dist/implementations/dms/page/controller.js.map +1 -1
- package/dist/implementations/dms/page/dynamic-menu.js +3 -2
- package/dist/implementations/dms/page/dynamic-menu.js.map +1 -1
- package/dist/implementations/dms/page/notifications.d.ts +6 -2
- package/dist/implementations/dms/page/notifications.js +1 -0
- package/dist/implementations/dms/page/notifications.js.map +1 -1
- package/dist/implementations/dms/page/payloads.js +6 -10
- package/dist/implementations/dms/page/payloads.js.map +1 -1
- package/dist/implementations/dms/page/preview-pages.js +6 -3
- package/dist/implementations/dms/page/preview-pages.js.map +1 -1
- package/dist/implementations/dms/page/public-layout.d.ts +2 -0
- package/dist/implementations/dms/page/public-layout.js +45 -0
- package/dist/implementations/dms/page/public-layout.js.map +1 -0
- package/dist/implementations/dms/page/registry.js +10 -4
- package/dist/implementations/dms/page/registry.js.map +1 -1
- package/dist/implementations/dms/permissions.js +12 -12
- package/dist/implementations/dms/permissions.js.map +1 -1
- package/dist/implementations/dms-base/bulk-selection.d.ts +3 -4
- package/dist/implementations/dms-base/bulk-selection.js +18 -6
- package/dist/implementations/dms-base/bulk-selection.js.map +1 -1
- package/dist/implementations/dms-base/filter-tokens.js.map +1 -1
- package/dist/implementations/dms-base/footer-summary.js +44 -27
- package/dist/implementations/dms-base/footer-summary.js.map +1 -1
- package/dist/implementations/dms-base/row-rule-operand.d.ts +6 -0
- package/dist/implementations/dms-base/row-rule-operand.js +41 -0
- package/dist/implementations/dms-base/row-rule-operand.js.map +1 -0
- package/dist/implementations/dms-base/search-route.d.ts +9 -13
- package/dist/implementations/dms-base/search-route.js +7 -6
- package/dist/implementations/dms-base/search-route.js.map +1 -1
- package/dist/implementations/dms-base/services.d.ts +1 -0
- package/dist/implementations/dms-base/services.js +1 -0
- package/dist/implementations/dms-base/services.js.map +1 -1
- package/dist/implementations/dms-base/table-view.d.ts +5 -6
- package/dist/implementations/dms-base/table-view.js +17 -6
- package/dist/implementations/dms-base/table-view.js.map +1 -1
- package/dist/implementations/dms-html-render/index.js +16 -6
- package/dist/implementations/dms-html-render/index.js.map +1 -1
- package/dist/implementations/dms-notifications/delivery-guard.d.ts +3 -2
- package/dist/implementations/dms-notifications/delivery-guard.js.map +1 -1
- package/dist/implementations/dms-notifications/index.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/pages/public/preview/block-types.d.ts +1 -2
- package/dist/pages/public/preview/block-types.js.map +1 -1
- package/dist/pages/settings/overview/account-summary.js +4 -1
- package/dist/pages/settings/overview/account-summary.js.map +1 -1
- package/dist/pages/settings/users/account-activity-feed.js +3 -2
- package/dist/pages/settings/users/account-activity-feed.js.map +1 -1
- package/dist/pages/settings/users/account-credentials.d.ts +1 -1
- package/dist/pages/settings/users/account-credentials.js +1 -2
- package/dist/pages/settings/users/account-credentials.js.map +1 -1
- package/dist/pages/settings/users/account-data-store.d.ts +1 -1
- package/dist/pages/settings/users/account-data-store.js +1 -3
- package/dist/pages/settings/users/account-data-store.js.map +1 -1
- package/dist/pages/settings/users/current-password.js +1 -1
- package/dist/pages/settings/users/current-password.js.map +1 -1
- package/dist/pages/settings/users/email-change.d.ts +2 -2
- package/dist/pages/settings/users/email-change.js +2 -3
- package/dist/pages/settings/users/email-change.js.map +1 -1
- package/dist/pages/settings/users/invite-extension-routes.d.ts +2 -2
- package/dist/pages/settings/users/invite-extension-routes.js +11 -4
- package/dist/pages/settings/users/invite-extension-routes.js.map +1 -1
- package/dist/pages/settings/users/invites.d.ts +2 -2
- package/dist/pages/settings/users/member-invite-batch.d.ts +2 -2
- package/dist/pages/settings/users/member-invite-batch.js +7 -3
- package/dist/pages/settings/users/member-invite-batch.js.map +1 -1
- package/dist/pages/settings/users/member-roles-field.js +1 -4
- package/dist/pages/settings/users/member-roles-field.js.map +1 -1
- package/dist/pages/settings/users/members.d.ts +2 -3
- package/dist/pages/settings/users/members.js.map +1 -1
- package/dist/pages/settings/users/notifications.d.ts +2 -3
- package/dist/pages/settings/users/notifications.js +2 -1
- package/dist/pages/settings/users/notifications.js.map +1 -1
- package/dist/pages/settings/users/profile-helpers.d.ts +0 -1
- package/dist/pages/settings/users/profile-helpers.js +0 -17
- package/dist/pages/settings/users/profile-helpers.js.map +1 -1
- package/dist/pages/settings/users/profile.d.ts +3 -4
- package/dist/pages/settings/users/profile.js +12 -12
- package/dist/pages/settings/users/profile.js.map +1 -1
- package/dist/pages/settings/users/region.d.ts +3 -4
- package/dist/pages/settings/users/region.js.map +1 -1
- package/dist/pages/settings/users/regional-preferences.d.ts +8 -1
- package/dist/pages/settings/users/regional-preferences.js +10 -6
- package/dist/pages/settings/users/regional-preferences.js.map +1 -1
- package/dist/pages/settings/users/role-preview.js +3 -2
- package/dist/pages/settings/users/role-preview.js.map +1 -1
- package/dist/pages/settings/users/roles.d.ts +4 -5
- package/dist/pages/settings/users/roles.js.map +1 -1
- package/dist/pages/settings/users/security.d.ts +9 -12
- package/dist/pages/settings/users/security.js +11 -9
- package/dist/pages/settings/users/security.js.map +1 -1
- package/dist/pages/settings/users/two-factor-operations.d.ts +7 -7
- package/dist/pages/settings/users/two-factor-operations.js +5 -7
- package/dist/pages/settings/users/two-factor-operations.js.map +1 -1
- package/dist/realtime/broker.js.map +1 -1
- package/dist/realtime/heartbeat.js.map +1 -1
- package/dist/realtime/redis-broker.js.map +1 -1
- package/dist/realtime/sessions.js.map +1 -1
- package/dist/realtime/sse.js +1 -2
- package/dist/realtime/sse.js.map +1 -1
- package/dist/routes/auth/forgot-password.d.ts +1 -1
- package/dist/routes/auth/forgot-password.js +1 -3
- package/dist/routes/auth/forgot-password.js.map +1 -1
- package/dist/routes/auth/login.d.ts +2 -2
- package/dist/routes/auth/login.js +8 -4
- package/dist/routes/auth/login.js.map +1 -1
- package/dist/routes/auth/logout.d.ts +1 -1
- package/dist/routes/auth/logout.js +1 -2
- package/dist/routes/auth/logout.js.map +1 -1
- package/dist/routes/auth/oauth/providers.js +30 -6
- package/dist/routes/auth/oauth/providers.js.map +1 -1
- package/dist/routes/auth/oauth/state.js +8 -5
- package/dist/routes/auth/oauth/state.js.map +1 -1
- package/dist/routes/auth/oauth/token-exchange.js +8 -1
- package/dist/routes/auth/oauth/token-exchange.js.map +1 -1
- package/dist/routes/auth/password-hash-upgrade.d.ts +2 -0
- package/dist/routes/auth/password-hash-upgrade.js +22 -0
- package/dist/routes/auth/password-hash-upgrade.js.map +1 -0
- package/dist/routes/auth/refresh.d.ts +1 -1
- package/dist/routes/auth/refresh.js +1 -2
- package/dist/routes/auth/refresh.js.map +1 -1
- package/dist/routes/auth/request-2fa-email.d.ts +1 -1
- package/dist/routes/auth/request-2fa-email.js +1 -2
- package/dist/routes/auth/request-2fa-email.js.map +1 -1
- package/dist/routes/auth/reset-password.d.ts +1 -1
- package/dist/routes/auth/reset-password.js +1 -3
- package/dist/routes/auth/reset-password.js.map +1 -1
- package/dist/routes/auth/session-handoff.d.ts +1 -1
- package/dist/routes/auth/session-handoff.js +1 -2
- package/dist/routes/auth/session-handoff.js.map +1 -1
- package/dist/routes/auth/signup.d.ts +1 -1
- package/dist/routes/auth/signup.js +1 -2
- package/dist/routes/auth/signup.js.map +1 -1
- package/dist/routes/auth/switch-tenant.d.ts +2 -3
- package/dist/routes/auth/switch-tenant.js +3 -2
- package/dist/routes/auth/switch-tenant.js.map +1 -1
- package/dist/routes/auth/validate-forgot-password-token.d.ts +1 -1
- package/dist/routes/auth/validate-forgot-password-token.js +1 -3
- package/dist/routes/auth/validate-forgot-password-token.js.map +1 -1
- package/dist/routes/auth/validate-invite-token.d.ts +1 -1
- package/dist/routes/auth/validate-invite-token.js +1 -3
- package/dist/routes/auth/validate-invite-token.js.map +1 -1
- package/dist/routes/auth/verify-2fa.d.ts +1 -1
- package/dist/routes/auth/verify-2fa.js +1 -2
- package/dist/routes/auth/verify-2fa.js.map +1 -1
- package/dist/routes/auth/verify-email.d.ts +1 -1
- package/dist/routes/auth/verify-email.js +1 -2
- package/dist/routes/auth/verify-email.js.map +1 -1
- package/dist/routes/auth.d.ts +14 -15
- package/dist/routes/auth.js +15 -13
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/authentication.d.ts +2 -0
- package/dist/routes/authentication.js +2 -0
- package/dist/routes/authentication.js.map +1 -1
- package/dist/routes/files.d.ts +1 -2
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/onboarding.d.ts +4 -3
- package/dist/routes/onboarding.js +20 -3
- package/dist/routes/onboarding.js.map +1 -1
- package/dist/routes/realtime.js +5 -6
- package/dist/routes/realtime.js.map +1 -1
- package/dist/routes/store.d.ts +6 -7
- package/dist/routes/store.js +19 -13
- package/dist/routes/store.js.map +1 -1
- package/dist/store/catalog.d.ts +13 -5
- package/dist/store/catalog.js +19 -9
- package/dist/store/catalog.js.map +1 -1
- package/dist/store/compatibility.d.ts +1 -0
- package/dist/store/compatibility.js +24 -8
- package/dist/store/compatibility.js.map +1 -1
- package/dist/store/frontend-compatibility.js +15 -3
- package/dist/store/frontend-compatibility.js.map +1 -1
- package/dist/store/interfaces.js +35 -13
- package/dist/store/interfaces.js.map +1 -1
- package/dist/store/internal/frontend/frontend-modules.js +7 -3
- package/dist/store/internal/frontend/frontend-modules.js.map +1 -1
- package/dist/store/internal/frontend/frontend-ready.d.ts +2 -1
- package/dist/store/internal/frontend/frontend-ready.js +6 -4
- package/dist/store/internal/frontend/frontend-ready.js.map +1 -1
- package/dist/store/internal/frontend/manifest.js +6 -7
- package/dist/store/internal/frontend/manifest.js.map +1 -1
- package/dist/store/operations.js.map +1 -1
- package/dist/store/registry.js.map +1 -1
- package/dist/store/runtime.d.ts +13 -0
- package/dist/store/runtime.js +9 -1
- package/dist/store/runtime.js.map +1 -1
- package/dist/utils/admin-invite-email.js +3 -1
- package/dist/utils/admin-invite-email.js.map +1 -1
- package/dist/utils/email-subjects.js +3 -1
- package/dist/utils/email-subjects.js.map +1 -1
- package/dist/utils/ensure-default-tenant.d.ts +2 -1
- package/dist/utils/ensure-default-tenant.js +126 -8
- package/dist/utils/ensure-default-tenant.js.map +1 -1
- package/dist/utils/export-jobs-run.js.map +1 -1
- package/dist/utils/export-jobs.js +3 -9
- package/dist/utils/export-jobs.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/own-value.d.ts +1 -0
- package/dist/utils/own-value.js +7 -0
- package/dist/utils/own-value.js.map +1 -0
- package/dist/utils/row-action-rule-evaluator.js +31 -35
- package/dist/utils/row-action-rule-evaluator.js.map +1 -1
- package/dist/utils/sign-in-country.js +4 -2
- package/dist/utils/sign-in-country.js.map +1 -1
- package/dist/utils/tenant-export-archive.js +9 -14
- package/dist/utils/tenant-export-archive.js.map +1 -1
- package/dist/utils/user-agent.js +2 -1
- package/dist/utils/user-agent.js.map +1 -1
- package/dist/validation/auth.schema.d.ts +10 -10
- package/dist/validation/onboarding/register-admin.schema.d.ts +5 -0
- package/dist/validation/onboarding/register-admin.schema.js +3 -0
- package/dist/validation/onboarding/register-admin.schema.js.map +1 -1
- package/dist/validation/regional-preferences.schema.d.ts +2 -2
- package/dist/validation/role-editor.schema.d.ts +1 -1
- package/frontend-vue/build/backend-boundary.ts +49 -18
- package/frontend-vue/dms.frontend.ts +8 -12
- package/frontend-vue/layers/dms-auth/server/accounts.ts +44 -3
- package/frontend-vue/layers/dms-auth/server/actions.ts +17 -4
- package/frontend-vue/layers/dms-auth/server/oauth.ts +42 -4
- package/frontend-vue/layers/dms-core/app/types/watch.ts +1 -2
- package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +1 -0
- package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +1 -0
- package/frontend-vue/layers/dms-core/shared/types/app-config.ts +5 -0
- package/frontend-vue/layers/dms-layout/app/app.config.ts +1 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidebar.vue +9 -9
- package/frontend-vue/layers/dms-layout/app/components/layout/AppLogo.vue +1 -0
- package/frontend-vue/layers/dms-layout/app/composables/page/useInstalledModules.ts +78 -0
- package/frontend-vue/layers/dms-layout/app/custom-pages/modules.vue +5 -24
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +2 -1
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +2 -1
- package/frontend-vue/layers/dms-onboarding/app/components/onboarding/steps/register.vue +21 -1
- package/frontend-vue/layers/dms-onboarding/app/custom-pages/onboarding.vue +14 -0
- package/frontend-vue/layers/dms-onboarding/i18n/locales/onboarding-en-GB.json +2 -0
- package/frontend-vue/layers/dms-onboarding/i18n/locales/onboarding-fr-FR.json +2 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/form/fieldValueRule.ts +57 -6
- package/frontend-vue/layers/dms-ui/app/build/composables/form/registerFormFunctions.ts +7 -9
- package/frontend-vue/layers/dms-ui/app/entries/composables/form/registerFormFunctions.ts +1 -0
- package/frontend-vue/lazy-plugin.ts +18 -0
- package/frontend-vue/package.json +2 -2
- package/package.json +19 -13
- package/skills/dms-project/SKILL.md +4 -3
|
@@ -25,13 +25,13 @@ export interface SuccessResult {
|
|
|
25
25
|
success: true;
|
|
26
26
|
}
|
|
27
27
|
export declare function getTwoFactorStatus(user: User): TwoFactorStatus;
|
|
28
|
-
|
|
29
|
-
export declare function startTotpSetup(user: User, body:
|
|
30
|
-
export declare function confirmTotpSetup(user: User, body:
|
|
31
|
-
export declare function startEmailSetup(user: User, body:
|
|
32
|
-
export declare function confirmEmailSetup(user: User, body:
|
|
33
|
-
export declare function disableTwoFactorMethod(user: User, body:
|
|
34
|
-
export declare function regenerateBackupCodes(user: User, body:
|
|
28
|
+
type AddMethodBody = ReturnType<typeof securitySchema.addTwoFactorMethod.parse>;
|
|
29
|
+
export declare function startTotpSetup(user: User, body: AddMethodBody, userModel: UserModel): Promise<TotpSetup>;
|
|
30
|
+
export declare function confirmTotpSetup(user: User, body: ReturnType<typeof authSchema.confirmTotp.parse>, userModel: UserModel): Promise<MethodEnabledResult>;
|
|
31
|
+
export declare function startEmailSetup(user: User, body: AddMethodBody, userModel: UserModel): Promise<SuccessResult>;
|
|
32
|
+
export declare function confirmEmailSetup(user: User, body: ReturnType<typeof authSchema.confirmEmailMethod.parse>, userModel: UserModel): Promise<MethodEnabledResult>;
|
|
33
|
+
export declare function disableTwoFactorMethod(user: User, body: ReturnType<typeof authSchema.disableTwoFactor.parse>, userModel: UserModel): Promise<SuccessResult>;
|
|
34
|
+
export declare function regenerateBackupCodes(user: User, body: ReturnType<typeof authSchema.regenerateBackup.parse>, userModel: UserModel): Promise<BackupCodesResult>;
|
|
35
35
|
export declare function markBackupCodesSaved(user: User, userModel: UserModel): Promise<TwoFactorStatus>;
|
|
36
36
|
export declare function requestTwoFactorEmailCode(user: User, userModel: UserModel): Promise<SuccessResult>;
|
|
37
37
|
export {};
|
|
@@ -12,7 +12,6 @@ exports.requestTwoFactorEmailCode = requestTwoFactorEmailCode;
|
|
|
12
12
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
13
13
|
const _2fa_1 = require("2fa");
|
|
14
14
|
const utils_1 = require("../../../utils");
|
|
15
|
-
const validation_1 = require("../../../validation");
|
|
16
15
|
const current_password_1 = require("./current-password");
|
|
17
16
|
const profile_helpers_1 = require("./profile-helpers");
|
|
18
17
|
const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
|
|
@@ -38,8 +37,7 @@ function renderQrCode(user, secret) {
|
|
|
38
37
|
(0, _2fa_1.generateGoogleQR)(profile_helpers_1.DMS_ISSUER, user.email, secret, { size: QR_MODULE_SIZE, margin: QR_MARGIN }, (error, dataUrl) => (error ? reject(error) : resolve(dataUrl)));
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
|
-
async function assertMayAddMethod(user,
|
|
42
|
-
const { currentPassword } = (0, interface_api_util_1.assertValidation)(body ?? {}, (value) => validation_1.securitySchema.addTwoFactorMethod.parse(value));
|
|
40
|
+
async function assertMayAddMethod(user, { currentPassword }, userModel) {
|
|
43
41
|
await (0, current_password_1.assertCurrentPasswordIfSet)(userModel, user, currentPassword);
|
|
44
42
|
}
|
|
45
43
|
async function startTotpSetup(user, body, userModel) {
|
|
@@ -72,7 +70,7 @@ function enableMethod(user, method) {
|
|
|
72
70
|
return isFirstMethod || hasNoCodes ? issueBackupCodes(user) : undefined;
|
|
73
71
|
}
|
|
74
72
|
async function confirmTotpSetup(user, body, userModel) {
|
|
75
|
-
const { code } =
|
|
73
|
+
const { code } = body;
|
|
76
74
|
(0, interface_api_util_1.assert)(user.twoFactorPendingSecret, HTTP_BAD_REQUEST, "error.totp_not_setup");
|
|
77
75
|
(0, interface_api_util_1.assert)(await (0, utils_1.acceptTotpCode)(userModel, user, user.twoFactorPendingSecret, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
78
76
|
user.twoFactorSecret = user.twoFactorPendingSecret;
|
|
@@ -93,7 +91,7 @@ async function startEmailSetup(user, body, userModel) {
|
|
|
93
91
|
return { success: true };
|
|
94
92
|
}
|
|
95
93
|
async function confirmEmailSetup(user, body, userModel) {
|
|
96
|
-
const { code } =
|
|
94
|
+
const { code } = body;
|
|
97
95
|
(0, interface_api_util_1.assert)(user.twoFactorEmailCode && !(0, utils_1.isEmailCodeExpired)(user), HTTP_BAD_REQUEST, "error.2fa_code_expired");
|
|
98
96
|
(0, interface_api_util_1.assert)((0, utils_1.emailCodeMatches)(user, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
99
97
|
(0, utils_1.consumeEmailCode)(user);
|
|
@@ -110,7 +108,7 @@ function clearTwoFactorLeftovers(user) {
|
|
|
110
108
|
user.twoFactorEmailCodeRequestedAt = null;
|
|
111
109
|
}
|
|
112
110
|
async function disableTwoFactorMethod(user, body, userModel) {
|
|
113
|
-
const { method, code } =
|
|
111
|
+
const { method, code } = body;
|
|
114
112
|
(0, interface_api_util_1.assert)(await (0, utils_1.verifyTwoFactorCode)(userModel, user, method, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
115
113
|
const methods = methodsOf(user).filter((entry) => entry !== method);
|
|
116
114
|
user.twoFactorMethods = methods;
|
|
@@ -130,7 +128,7 @@ async function isValidCodeForAnyMethod(userModel, user, code) {
|
|
|
130
128
|
return false;
|
|
131
129
|
}
|
|
132
130
|
async function regenerateBackupCodes(user, body, userModel) {
|
|
133
|
-
const { code } =
|
|
131
|
+
const { code } = body;
|
|
134
132
|
(0, interface_api_util_1.assert)(methodsOf(user).length > 0, HTTP_BAD_REQUEST, "error.2fa_not_enabled");
|
|
135
133
|
(0, interface_api_util_1.assert)(await isValidCodeForAnyMethod(userModel, user, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
136
134
|
const previousCount = user.twoFactorBackupCodes?.length ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two-factor-operations.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/two-factor-operations.ts"],"names":[],"mappings":";;AA0EA,gDAUC;
|
|
1
|
+
{"version":3,"file":"two-factor-operations.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/two-factor-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/realtime/broker.ts"],"names":[],"mappings":";;;AA8BA,4CASC;AAvCD,6CAA2C;AAC3C,gEAA6D;AAE7D,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAcf,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAanD,SAAgB,gBAAgB,CAC9B,KAA4B,EAC5B,IAAgB;IAEhB,OAAO,CACL,IAAI,KAAK,oBAAY;QACrB,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC5B,KAAK,CAAC,QAAQ,KAAK,IAAI,CACxB,CAAC;AACJ,CAAC;AAsBD,MAAa,cAAc;IACR,OAAO,GAAG,IAAI,0BAAY,EAAE,CAAC;IAE9C;QACE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAoB;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;oBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/realtime/broker.ts"],"names":[],"mappings":";;;AA8BA,4CASC;AAvCD,6CAA2C;AAC3C,gEAA6D;AAE7D,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAcf,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAanD,SAAgB,gBAAgB,CAC9B,KAA4B,EAC5B,IAAgB;IAEhB,OAAO,CACL,IAAI,KAAK,oBAAY;QACrB,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC5B,KAAK,CAAC,QAAQ,KAAK,IAAI,CACxB,CAAC;AACJ,CAAC;AAsBD,MAAa,cAAc;IACR,OAAO,GAAG,IAAI,0BAAY,EAAE,CAAC;IAE9C;QACE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAoB;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;oBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAC9B,iBAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAC9D,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iBAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,OAA6B;QACpD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;CACF;AA9BD,wCA8BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/realtime/heartbeat.ts"],"names":[],"mappings":";;;AAaA,
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/realtime/heartbeat.ts"],"names":[],"mappings":";;;AAaA,wCAiBC;AAED,kDASC;AAzCD,gEAA6D;AAG7D,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AACtD,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,eAAe,GAAG,GAAG,CAAC;AAErB,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAU,EAAE,CACzD,GAAG,oBAAoB,GAAG,UAAU,EAAE,CAAC;AAD5B,QAAA,YAAY,gBACgB;AAIlC,KAAK,UAAU,cAAc,CAClC,EAAW,EACX,UAAkB;IAElB,MAAM,GAAG,GAAG,IAAA,oBAAY,EAAC,UAAU,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC,KAAK,CACzD,CAAC,KAAc,EAAE,EAAE,CACjB,iBAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAC5D,CAAC;IACJ,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAChB,OAAO,KAAK,IAAI,EAAE;QAChB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,EAAW;IACnD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,oBAAoB,GAAG,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-broker.js","sourceRoot":"","sources":["../../src/realtime/redis-broker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"redis-broker.js","sourceRoot":"","sources":["../../src/realtime/redis-broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/realtime/sessions.ts"],"names":[],"mappings":";;AAoDA,0CAGC;AAED,8CAMC;AAED,wCAEC;AAED,wCAUC;AAED,0DAIC;AAED,gDAKC;AAGD,oDAIC;AAED,8CAIC;AAQD,4CAIC;AApED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEvD,SAAgB,eAAe,CAAC,SAAiB,EAAE,IAAiB;IAClE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5D,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,IAAI,KAAK;QACP,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzE,OAAO,KAAK,EAAE,aAAa,IAAI,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/realtime/sessions.ts"],"names":[],"mappings":";;AAoDA,0CAGC;AAED,8CAMC;AAED,wCAEC;AAED,wCAUC;AAED,0DAIC;AAED,gDAKC;AAGD,oDAIC;AAED,8CAIC;AAQD,4CAIC;AApED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEvD,SAAgB,eAAe,CAAC,SAAiB,EAAE,IAAiB;IAClE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5D,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,IAAI,KAAK;QACP,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzE,OAAO,KAAK,EAAE,aAAa,IAAI,IAAI,GAAG,EAAuB,CAAC;AAChE,CAAC;AAED,SAAgB,cAAc,CAAC,SAAiB;IAC9C,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;AACvC,CAAC;AAED,SAAgB,cAAc,CAC5B,SAAiB,EACjB,MAA0B,EAC1B,cAAc,GAAG,KAAK;IAEtB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,uBAAuB,CACrC,SAAiB;IAEjB,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;AAChD,CAAC;AAED,SAAgB,kBAAkB,CAChC,YAAoB,EACpB,IAAoB;IAEpB,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAGD,SAAgB,oBAAoB,CAAC,YAAoB;IACvD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,SAAgB,iBAAiB,CAC/B,YAAoB;IAEpB,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;AAC7C,CAAC;AAQM,KAAK,UAAU,gBAAgB;IACpC,MAAM,OAAO,CAAC,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAC7D,CAAC;AACJ,CAAC"}
|
package/dist/realtime/sse.js
CHANGED
|
@@ -11,7 +11,6 @@ const HEADERS = {
|
|
|
11
11
|
"X-Accel-Buffering": "no",
|
|
12
12
|
Connection: "keep-alive",
|
|
13
13
|
};
|
|
14
|
-
const formatFrame = (eventName, data) => `event: ${eventName}\ndata: ${JSON.stringify(data)}\n\n`;
|
|
15
14
|
const applyHeaders = (ctx) => {
|
|
16
15
|
for (const [name, value] of Object.entries(HEADERS)) {
|
|
17
16
|
ctx.response.addHeader(name, value);
|
|
@@ -44,7 +43,7 @@ function openSseStream(ctx) {
|
|
|
44
43
|
send: (eventName, data) => {
|
|
45
44
|
if (isClosed)
|
|
46
45
|
return;
|
|
47
|
-
writer.write(
|
|
46
|
+
writer.write(`event: ${eventName}\ndata: ${JSON.stringify(data)}\n\n`);
|
|
48
47
|
},
|
|
49
48
|
onClose: (handler) => closeHandlers.push(handler),
|
|
50
49
|
close: async () => {
|
package/dist/realtime/sse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/realtime/sse.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/realtime/sse.ts"],"names":[],"mappings":";;AA8CA,sCA+BC;AA5ED,gEAA6D;AAE7D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C,MAAM,OAAO,GAAG;IACd,eAAe,EAAE,wBAAwB;IACzC,mBAAmB,EAAE,IAAI;IACzB,UAAU,EAAE,YAAY;CACzB,CAAC;AAeF,MAAM,YAAY,GAAG,CAAC,GAAmB,EAAQ,EAAE;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAuB,EAAkB,EAAE,CACjE,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAE9E,MAAM,WAAW,GAAG,KAAK,EACvB,QAA2C,EAC5B,EAAE;IACjB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,SAAgB,aAAa,CAAC,GAAmB;IAC/C,YAAY,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAsC,EAAE,CAAC;IAC5D,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEpC,OAAO;QACL,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;YACxB,IAAI,QAAQ;gBAAE,OAAO;YACrB,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QACjD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,MAAM,OAAO,EAAE,CAAC;gBAChB,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iBAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { UserModel } from "@antelopejs/interface-dms/auth/db";
|
|
2
2
|
import { authSchema } from "../../validation";
|
|
3
|
-
export declare function forgotPassword(userModel: UserModel, body:
|
|
3
|
+
export declare function forgotPassword(userModel: UserModel, body: ReturnType<typeof authSchema.forgot.parse>): Promise<void>;
|
|
@@ -4,16 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.forgotPassword = forgotPassword;
|
|
7
|
-
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
8
7
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
9
8
|
const auth_1 = require("@antelopejs/interface-dms/auth");
|
|
10
9
|
const randomstring_1 = __importDefault(require("randomstring"));
|
|
11
10
|
const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
|
|
12
11
|
const models_1 = require("../../db/models");
|
|
13
|
-
const validation_1 = require("../../validation");
|
|
14
12
|
const RATE_LIMIT_MS = 60 * 1000;
|
|
15
13
|
async function forgotPassword(userModel, body) {
|
|
16
|
-
const { email } =
|
|
14
|
+
const { email } = body;
|
|
17
15
|
const user = await userModel.getByEmail(email);
|
|
18
16
|
if (!user) {
|
|
19
17
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgot-password.js","sourceRoot":"","sources":["../../../src/routes/auth/forgot-password.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"forgot-password.js","sourceRoot":"","sources":["../../../src/routes/auth/forgot-password.ts"],"names":[],"mappings":";;;;;AAUA,wCAgCC;AA1CD,6FAAqE;AACrE,yDAAsE;AAEtE,gEAAwC;AACxC,qFAAgF;AAChF,4CAAsD;AAGtD,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzB,KAAK,UAAU,cAAc,CAClC,SAAoB,EACpB,IAAgD;IAEhD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,MAAM,oBAAoB,GACxB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;QACxD,IAAI,oBAAoB,GAAG,aAAa,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;IACH,CAAC;IAED,IAAI,CAAC,mBAAmB,GAAG,sBAAY,CAAC,QAAQ,CAAC;QAC/C,MAAM,EAAE,CAAC;QACT,cAAc,EAAE,WAAW;KAC5B,CAAC,CAAC;IACH,IAAI,CAAC,yBAAyB,GAAG,IAAI,IAAI,EAAE,CAAC;IAE5C,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAA,wCAAQ,EAAC,4BAAmB,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErE,IAAA,+BAAa,EACX,IAAA,2BAAoB,EAAC,IAAI,CAAC,EAC1B,4BAA4B,IAAI,CAAC,KAAK,GAAG,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SessionModel, type UserModel } from "@antelopejs/interface-dms/auth/db";
|
|
2
2
|
import type { ClientOrigin } from "../../utils";
|
|
3
3
|
import { authSchema } from "../../validation";
|
|
4
4
|
import { type LoginOutcome } from "./session-response";
|
|
5
|
-
export declare function login(userModel: UserModel, sessionModel: SessionModel, body:
|
|
5
|
+
export declare function login(userModel: UserModel, sessionModel: SessionModel, body: ReturnType<typeof authSchema.login.parse>, userAgent: string, origin: ClientOrigin): Promise<LoginOutcome>;
|
|
@@ -2,20 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.login = login;
|
|
4
4
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
5
|
+
const db_1 = require("@antelopejs/interface-dms/auth/db");
|
|
5
6
|
const hooks_1 = require("../../hooks");
|
|
6
|
-
const validation_1 = require("../../validation");
|
|
7
7
|
const utils_1 = require("../../utils");
|
|
8
|
+
const password_hash_upgrade_1 = require("./password-hash-upgrade");
|
|
8
9
|
const session_response_1 = require("./session-response");
|
|
9
10
|
const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
|
|
10
11
|
const HTTP_UNAUTHORIZED = 401;
|
|
11
12
|
const INVALID_CREDENTIALS_MESSAGE = "error.invalid_credentials";
|
|
12
13
|
async function login(userModel, sessionModel, body, userAgent, origin) {
|
|
13
|
-
const { email, password } =
|
|
14
|
+
const { email, password } = body;
|
|
14
15
|
const normalizedEmail = email.toLowerCase();
|
|
15
16
|
(0, utils_1.assertLoginAllowed)(normalizedEmail, origin.ip);
|
|
16
17
|
const user = await userModel.getByEmail(normalizedEmail);
|
|
17
|
-
const isPasswordValid =
|
|
18
|
-
if (
|
|
18
|
+
const isPasswordValid = await (user ?? new db_1.User()).testHashAsync("password", password);
|
|
19
|
+
if (isPasswordValid)
|
|
20
|
+
(0, utils_1.assertLoginAllowed)(normalizedEmail, origin.ip);
|
|
21
|
+
else
|
|
19
22
|
(0, utils_1.recordLoginFailure)(normalizedEmail, origin.ip);
|
|
20
23
|
(0, interface_api_util_1.assert)(user, HTTP_UNAUTHORIZED, INVALID_CREDENTIALS_MESSAGE);
|
|
21
24
|
(0, fire_and_forget_1.fireAndForget)(isPasswordValid
|
|
@@ -23,6 +26,7 @@ async function login(userModel, sessionModel, body, userAgent, origin) {
|
|
|
23
26
|
: (0, hooks_1.recordFailedPassword)(user), "failed password bookkeeping");
|
|
24
27
|
(0, interface_api_util_1.assert)(isPasswordValid, HTTP_UNAUTHORIZED, INVALID_CREDENTIALS_MESSAGE);
|
|
25
28
|
(0, utils_1.clearLoginFailures)(normalizedEmail);
|
|
29
|
+
(0, fire_and_forget_1.fireAndForget)((0, password_hash_upgrade_1.upgradePasswordHash)(userModel, user, password), "password hash upgrade");
|
|
26
30
|
return (0, session_response_1.resolveLoginOutcome)(sessionModel, user, userAgent, origin);
|
|
27
31
|
}
|
|
28
32
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/routes/auth/login.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/routes/auth/login.ts"],"names":[],"mappings":";;AAqBA,sBAiCC;AAtDD,uEAAwD;AACxD,0DAI2C;AAC3C,uCAAyE;AAGzE,uCAIqB;AACrB,mEAA8D;AAC9D,yDAA4E;AAC5E,qFAAgF;AAEhF,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AAEzD,KAAK,UAAU,KAAK,CACzB,SAAoB,EACpB,YAA0B,EAC1B,IAA+C,EAC/C,SAAiB,EACjB,MAAoB;IAEpB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAA,0BAAkB,EAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,SAAI,EAAE,CAAC,CAAC,aAAa,CAC9D,UAAU,EACV,QAAQ,CACT,CAAC;IACF,IAAI,eAAe;QAAE,IAAA,0BAAkB,EAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;;QAC/D,IAAA,0BAAkB,EAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAEpD,IAAA,2BAAM,EAAC,IAAI,EAAE,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;IAC7D,IAAA,+BAAa,EACX,eAAe;QACb,CAAC,CAAC,IAAA,4BAAoB,EAAC,IAAI,CAAC,GAAG,CAAC;QAChC,CAAC,CAAC,IAAA,4BAAoB,EAAC,IAAI,CAAC,EAC9B,6BAA6B,CAC9B,CAAC;IACF,IAAA,2BAAM,EAAC,eAAe,EAAE,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;IACxE,IAAA,0BAAkB,EAAC,eAAe,CAAC,CAAC;IACpC,IAAA,+BAAa,EACX,IAAA,2CAAmB,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAC9C,uBAAuB,CACxB,CAAC;IAEF,OAAO,IAAA,sCAAmB,EAAC,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { HTTPResult } from "@antelopejs/interface-api";
|
|
2
2
|
import type { SessionModel, User, UserModel } from "@antelopejs/interface-dms/auth/db";
|
|
3
3
|
import { authSchema } from "../../validation";
|
|
4
|
-
export declare function logout(userModel: UserModel, sessionModel: SessionModel, user: User, body:
|
|
4
|
+
export declare function logout(userModel: UserModel, sessionModel: SessionModel, user: User, body: ReturnType<typeof authSchema.logout.parse>): Promise<HTTPResult>;
|
|
@@ -5,9 +5,8 @@ const interface_api_1 = require("@antelopejs/interface-api");
|
|
|
5
5
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
6
6
|
const auth_1 = require("@antelopejs/interface-dms/auth");
|
|
7
7
|
const utils_1 = require("../../utils");
|
|
8
|
-
const validation_1 = require("../../validation");
|
|
9
8
|
async function logout(userModel, sessionModel, user, body) {
|
|
10
|
-
const { token } =
|
|
9
|
+
const { token } = body;
|
|
11
10
|
const data = await (0, auth_1.validateRefreshToken)(token);
|
|
12
11
|
(0, interface_api_util_1.assert)(data.id === String(user._id), 401, "error.invalid_token");
|
|
13
12
|
if (data.sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/routes/auth/logout.ts"],"names":[],"mappings":";;AAWA,wBAmBC;AA9BD,6DAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/routes/auth/logout.ts"],"names":[],"mappings":";;AAWA,wBAmBC;AA9BD,6DAAuD;AACvD,uEAAwD;AACxD,yDAAsE;AAMtE,uCAA8C;AAGvC,KAAK,UAAU,MAAM,CAC1B,SAAoB,EACpB,YAA0B,EAC1B,IAAU,EACV,IAAgD;IAEhD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,MAAM,IAAI,GAAG,MAAM,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAC;IAC/C,IAAA,2BAAM,EAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAEjE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,GAAG,IAAA,uBAAe,GAAE,CAAC;QACjC,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,0BAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OAUTH_PROVIDERS = void 0;
|
|
4
4
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
5
|
+
const zod_1 = require("zod");
|
|
5
6
|
const HTTP_BAD_GATEWAY = 502;
|
|
6
7
|
const PROVIDER_UNREACHABLE_MESSAGE = "error.oauth.provider_unreachable";
|
|
7
8
|
const EMAIL_UNAVAILABLE_MESSAGE = "error.oauth.email_unavailable";
|
|
@@ -13,6 +14,28 @@ const GITHUB_HEADERS = {
|
|
|
13
14
|
"X-GitHub-Api-Version": "2022-11-28",
|
|
14
15
|
};
|
|
15
16
|
const GOOGLE_USERINFO_URL = "https://openidconnect.googleapis.com/v1/userinfo";
|
|
17
|
+
const AccountIdSchema = zod_1.z
|
|
18
|
+
.union([zod_1.z.number(), zod_1.z.string()])
|
|
19
|
+
.optional()
|
|
20
|
+
.catch(undefined);
|
|
21
|
+
const TextSchema = zod_1.z.string().optional().catch(undefined);
|
|
22
|
+
const FlagSchema = zod_1.z.boolean().optional().catch(undefined);
|
|
23
|
+
const GithubUserSchema = zod_1.z.object({
|
|
24
|
+
id: AccountIdSchema,
|
|
25
|
+
login: TextSchema,
|
|
26
|
+
name: zod_1.z.string().nullable().optional().catch(undefined),
|
|
27
|
+
});
|
|
28
|
+
const GithubEmailsSchema = zod_1.z.array(zod_1.z.object({
|
|
29
|
+
email: TextSchema,
|
|
30
|
+
primary: FlagSchema,
|
|
31
|
+
verified: FlagSchema,
|
|
32
|
+
}));
|
|
33
|
+
const GoogleUserInfoSchema = zod_1.z.object({
|
|
34
|
+
sub: AccountIdSchema,
|
|
35
|
+
email: TextSchema,
|
|
36
|
+
email_verified: FlagSchema,
|
|
37
|
+
name: TextSchema,
|
|
38
|
+
});
|
|
16
39
|
function isNonEmptyString(value) {
|
|
17
40
|
return typeof value === "string" && value.length > 0;
|
|
18
41
|
}
|
|
@@ -22,7 +45,7 @@ function requireAccountId(value) {
|
|
|
22
45
|
(0, interface_api_util_1.assert)(isUsable, HTTP_BAD_GATEWAY, IDENTITY_MALFORMED_MESSAGE);
|
|
23
46
|
return String(value);
|
|
24
47
|
}
|
|
25
|
-
async function fetchProviderJson(url, accessToken, headers, failureMessage) {
|
|
48
|
+
async function fetchProviderJson(url, accessToken, headers, failureMessage, schema) {
|
|
26
49
|
const response = await fetch(url, {
|
|
27
50
|
headers: {
|
|
28
51
|
Authorization: `Bearer ${accessToken}`,
|
|
@@ -31,13 +54,14 @@ async function fetchProviderJson(url, accessToken, headers, failureMessage) {
|
|
|
31
54
|
},
|
|
32
55
|
});
|
|
33
56
|
(0, interface_api_util_1.assert)(response.ok, HTTP_BAD_GATEWAY, failureMessage);
|
|
34
|
-
|
|
57
|
+
const answer = schema.safeParse(await response.json());
|
|
58
|
+
(0, interface_api_util_1.assert)(answer.success, HTTP_BAD_GATEWAY, failureMessage);
|
|
59
|
+
return answer.data;
|
|
35
60
|
}
|
|
36
61
|
async function fetchGithubIdentity(accessToken) {
|
|
37
|
-
const user = await fetchProviderJson(`${GITHUB_API_URL}/user`, accessToken, GITHUB_HEADERS, PROVIDER_UNREACHABLE_MESSAGE);
|
|
62
|
+
const user = await fetchProviderJson(`${GITHUB_API_URL}/user`, accessToken, GITHUB_HEADERS, PROVIDER_UNREACHABLE_MESSAGE, GithubUserSchema);
|
|
38
63
|
const providerAccountId = requireAccountId(user.id);
|
|
39
|
-
const emails = await fetchProviderJson(`${GITHUB_API_URL}/user/emails`, accessToken, GITHUB_HEADERS, EMAIL_UNAVAILABLE_MESSAGE);
|
|
40
|
-
(0, interface_api_util_1.assert)(Array.isArray(emails), HTTP_BAD_GATEWAY, EMAIL_UNAVAILABLE_MESSAGE);
|
|
64
|
+
const emails = await fetchProviderJson(`${GITHUB_API_URL}/user/emails`, accessToken, GITHUB_HEADERS, EMAIL_UNAVAILABLE_MESSAGE, GithubEmailsSchema);
|
|
41
65
|
const primary = emails.find((entry) => entry.primary === true) ?? emails[0];
|
|
42
66
|
(0, interface_api_util_1.assert)(primary && isNonEmptyString(primary.email), HTTP_BAD_GATEWAY, EMAIL_UNAVAILABLE_MESSAGE);
|
|
43
67
|
const name = [user.name, user.login].find(isNonEmptyString);
|
|
@@ -49,7 +73,7 @@ async function fetchGithubIdentity(accessToken) {
|
|
|
49
73
|
};
|
|
50
74
|
}
|
|
51
75
|
async function fetchGoogleIdentity(accessToken) {
|
|
52
|
-
const profile = await fetchProviderJson(GOOGLE_USERINFO_URL, accessToken, {}, PROVIDER_UNREACHABLE_MESSAGE);
|
|
76
|
+
const profile = await fetchProviderJson(GOOGLE_USERINFO_URL, accessToken, {}, PROVIDER_UNREACHABLE_MESSAGE, GoogleUserInfoSchema);
|
|
53
77
|
const providerAccountId = requireAccountId(profile.sub);
|
|
54
78
|
(0, interface_api_util_1.assert)(isNonEmptyString(profile.email), HTTP_BAD_GATEWAY, EMAIL_UNAVAILABLE_MESSAGE);
|
|
55
79
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../../src/routes/auth/oauth/providers.ts"],"names":[],"mappings":";;;AAAA,uEAAwD;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../../src/routes/auth/oauth/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ exports.assertValidOAuthState = assertValidOAuthState;
|
|
|
5
5
|
const node_crypto_1 = require("node:crypto");
|
|
6
6
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
7
7
|
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
8
|
+
const zod_1 = require("zod");
|
|
8
9
|
const config_1 = require("../../../config");
|
|
9
10
|
const utils_1 = require("../../../utils");
|
|
10
11
|
const HTTP_BAD_REQUEST = 400;
|
|
@@ -16,6 +17,11 @@ const STATE_NONCE_BYTES = 16;
|
|
|
16
17
|
const SECONDS_IN_MINUTE = 60;
|
|
17
18
|
const STATE_LIFETIME_MINUTES = 10;
|
|
18
19
|
const STATE_LIFETIME_SECONDS = STATE_LIFETIME_MINUTES * SECONDS_IN_MINUTE;
|
|
20
|
+
const oauthStateClaims = zod_1.z.object({
|
|
21
|
+
provider: zod_1.z.string().optional(),
|
|
22
|
+
nonce: zod_1.z.string().optional(),
|
|
23
|
+
purpose: zod_1.z.string().optional(),
|
|
24
|
+
});
|
|
19
25
|
const MILLISECONDS_IN_SECOND = 1000;
|
|
20
26
|
const CONSUMED_NONCE_TTL_MS = STATE_LIFETIME_SECONDS * MILLISECONDS_IN_SECOND;
|
|
21
27
|
const consumedNonces = new Map();
|
|
@@ -50,11 +56,8 @@ function decodeState(state) {
|
|
|
50
56
|
const claims = (0, jsonwebtoken_1.verify)(state, getStateSecret());
|
|
51
57
|
if (!(0, utils_1.isJwtClaims)(claims))
|
|
52
58
|
return undefined;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
nonce: claims.nonce,
|
|
56
|
-
purpose: claims.purpose,
|
|
57
|
-
};
|
|
59
|
+
const parsed = oauthStateClaims.safeParse(claims);
|
|
60
|
+
return parsed.success ? parsed.data : undefined;
|
|
58
61
|
}
|
|
59
62
|
catch {
|
|
60
63
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/routes/auth/oauth/state.ts"],"names":[],"mappings":";;AAwFA,wCAOC;AAiBD,sDAoBC;AApID,6CAA2D;AAC3D,uEAAwD;AACxD,+CAA4C;AAC5C,4CAAgD;AAChD,0CAA6C;AAE7C,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAC1D,MAAM,0BAA0B,GAAG,gCAAgC,CAAC;AAEpE,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,sBAAsB,GAAG,sBAAsB,GAAG,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/routes/auth/oauth/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,14 @@ exports.exchangeCodeForAccessToken = exchangeCodeForAccessToken;
|
|
|
4
4
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
5
5
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
6
6
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
7
|
+
const zod_1 = require("zod");
|
|
7
8
|
const config_1 = require("./config");
|
|
8
9
|
const HTTP_BAD_GATEWAY = 502;
|
|
9
10
|
const TOKEN_EXCHANGE_FAILED_MESSAGE = "error.oauth.token_exchange_failed";
|
|
11
|
+
const TokenResponseSchema = zod_1.z.object({
|
|
12
|
+
access_token: zod_1.z.string().optional().catch(undefined),
|
|
13
|
+
error: zod_1.z.string().optional().catch(undefined),
|
|
14
|
+
});
|
|
10
15
|
async function exchangeCodeForAccessToken(enabled, code) {
|
|
11
16
|
const body = new URLSearchParams({
|
|
12
17
|
grant_type: "authorization_code",
|
|
@@ -24,7 +29,9 @@ async function exchangeCodeForAccessToken(enabled, code) {
|
|
|
24
29
|
body,
|
|
25
30
|
});
|
|
26
31
|
(0, interface_api_util_1.assert)(response.ok, HTTP_BAD_GATEWAY, TOKEN_EXCHANGE_FAILED_MESSAGE);
|
|
27
|
-
const
|
|
32
|
+
const answer = TokenResponseSchema.safeParse(await response.json());
|
|
33
|
+
(0, interface_api_util_1.assert)(answer.success, HTTP_BAD_GATEWAY, TOKEN_EXCHANGE_FAILED_MESSAGE);
|
|
34
|
+
const tokens = answer.data;
|
|
28
35
|
if (tokens.access_token) {
|
|
29
36
|
return tokens.access_token;
|
|
30
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-exchange.js","sourceRoot":"","sources":["../../../../src/routes/auth/oauth/token-exchange.ts"],"names":[],"mappings":";;AAyBA,
|
|
1
|
+
{"version":3,"file":"token-exchange.js","sourceRoot":"","sources":["../../../../src/routes/auth/oauth/token-exchange.ts"],"names":[],"mappings":";;AAyBA,gEAkCC;AA3DD,6DAAuD;AACvD,uEAAwD;AACxD,gEAA6D;AAC7D,6BAAwB;AAExB,qCAAiD;AAEjD,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,6BAA6B,GAAG,mCAAmC,CAAC;AAE1E,MAAM,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACpD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC9C,CAAC,CAAC;AAYI,KAAK,UAAU,0BAA0B,CAC9C,OAA6B,EAC7B,IAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;QAC/B,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ;QACvC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,YAAY;QAC/C,YAAY,EAAE,IAAA,8BAAqB,EAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACtD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI;KACL,CAAC,CAAC;IAEH,IAAA,2BAAM,EAAC,QAAQ,CAAC,EAAE,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,IAAA,2BAAM,EAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,iBAAO,CAAC,KAAK,CACX,2CAA2C,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE,CAC7F,CAAC;IACF,MAAM,IAAI,0BAAU,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.upgradePasswordHash = upgradePasswordHash;
|
|
4
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
5
|
+
const db_1 = require("@antelopejs/interface-dms/auth/db");
|
|
6
|
+
async function upgradePasswordHash(userModel, user, password) {
|
|
7
|
+
if (!user.isHashOutdated("password"))
|
|
8
|
+
return;
|
|
9
|
+
const testedHash = user.password;
|
|
10
|
+
user.password = password;
|
|
11
|
+
const { _internal } = db_1.UserModel.toDatabase(user);
|
|
12
|
+
const storedHashes = { _internal };
|
|
13
|
+
await userModel.table
|
|
14
|
+
.getAll(user.email, "email")
|
|
15
|
+
.filter((row) => row
|
|
16
|
+
.key("_id")
|
|
17
|
+
.eq(user._id)
|
|
18
|
+
.and((0, interface_database_decorators_1.unlockrequest)(db_1.User, row, "password", []).eq(testedHash)))
|
|
19
|
+
.update(storedHashes)
|
|
20
|
+
.run();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=password-hash-upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-hash-upgrade.js","sourceRoot":"","sources":["../../../src/routes/auth/password-hash-upgrade.ts"],"names":[],"mappings":";;AAcA,kDAoBC;AAlCD,6FAA0E;AAC1E,0DAAoE;AAa7D,KAAK,UAAU,mBAAmB,CACvC,SAAoB,EACpB,IAAU,EACV,QAAgB;IAEhB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QAAE,OAAO;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,GAAG,cAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,GAA4C,EAAE,SAAS,EAAE,CAAC;IAC5E,MAAM,SAAS,CAAC,KAAK;SAClB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;SAC3B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,GAAG;SACA,GAAG,CAAC,KAAK,CAAC;SACV,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;SACZ,GAAG,CAAC,IAAA,6CAAa,EAAC,SAAI,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAChE;SACA,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,EAAE,CAAC;AACX,CAAC"}
|
|
@@ -2,4 +2,4 @@ import { type SessionModel, type UserModel } from "@antelopejs/interface-dms/aut
|
|
|
2
2
|
import { authSchema } from "../../validation";
|
|
3
3
|
import type { AuthResponse } from "./types";
|
|
4
4
|
export declare const HTTP_FORBIDDEN = 403;
|
|
5
|
-
export declare function refresh(userModel: UserModel, sessionModel: SessionModel, body:
|
|
5
|
+
export declare function refresh(userModel: UserModel, sessionModel: SessionModel, body: ReturnType<typeof authSchema.refresh.parse>): Promise<AuthResponse>;
|
|
@@ -8,7 +8,6 @@ const db_1 = require("@antelopejs/interface-dms/db");
|
|
|
8
8
|
const auth_1 = require("@antelopejs/interface-dms/auth");
|
|
9
9
|
const db_2 = require("@antelopejs/interface-dms/auth/db");
|
|
10
10
|
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
11
|
-
const validation_1 = require("../../validation");
|
|
12
11
|
const utils_1 = require("../../utils");
|
|
13
12
|
exports.HTTP_FORBIDDEN = 403;
|
|
14
13
|
function shouldRotateRefreshToken(token) {
|
|
@@ -26,7 +25,7 @@ async function assertTenantAccess(user, tenantId) {
|
|
|
26
25
|
(0, interface_api_util_1.assert)(membership, exports.HTTP_FORBIDDEN, "error.not_a_member");
|
|
27
26
|
}
|
|
28
27
|
async function refresh(userModel, sessionModel, body) {
|
|
29
|
-
const { token } =
|
|
28
|
+
const { token } = body;
|
|
30
29
|
const tokenPayload = await (0, auth_1.validateRefreshToken)(token);
|
|
31
30
|
const user = await userModel.get(tokenPayload.id);
|
|
32
31
|
(0, interface_api_util_1.assert)(user, 401, "error.invalid_token");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/routes/auth/refresh.ts"],"names":[],"mappings":";;;AA0CA,0BA2DC;AArGD,
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/routes/auth/refresh.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@ import { authSchema } from "../../validation";
|
|
|
3
3
|
type Request2FAEmailResult = {
|
|
4
4
|
success: boolean;
|
|
5
5
|
};
|
|
6
|
-
export declare function request2FAEmail(userModel: UserModel, body:
|
|
6
|
+
export declare function request2FAEmail(userModel: UserModel, body: ReturnType<typeof authSchema.request2FAEmail.parse>): Promise<Request2FAEmailResult>;
|
|
7
7
|
export {};
|
|
@@ -4,10 +4,9 @@ exports.request2FAEmail = request2FAEmail;
|
|
|
4
4
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
5
5
|
const auth_1 = require("@antelopejs/interface-dms/auth");
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
|
-
const validation_1 = require("../../validation");
|
|
8
7
|
const two_factor_throttle_1 = require("./two-factor-throttle");
|
|
9
8
|
async function request2FAEmail(userModel, body) {
|
|
10
|
-
const { token } =
|
|
9
|
+
const { token } = body;
|
|
11
10
|
const { user } = await (0, auth_1.validateTwoFactorToken)(token);
|
|
12
11
|
(0, interface_api_util_1.assert)(user.twoFactorMethods?.includes("email"), 400, "error.2fa_email_not_enabled");
|
|
13
12
|
await (0, two_factor_throttle_1.assertTwoFactorChallengeOpen)(user._id, token);
|