@antelopejs/dms 0.6.2 → 0.7.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 +22 -0
- package/dist/db/models/notification-feed-filter.d.ts +0 -1
- package/dist/db/models/notification-feed-filter.js +0 -4
- package/dist/db/models/notification-feed-filter.js.map +1 -1
- package/dist/db/models/signInAttempts.model.d.ts +18 -0
- package/dist/db/models/signInAttempts.model.js +83 -12
- package/dist/db/models/signInAttempts.model.js.map +1 -1
- package/dist/db/models/userEmailChanges.model.d.ts +8 -1
- package/dist/db/models/userEmailChanges.model.js +27 -2
- package/dist/db/models/userEmailChanges.model.js.map +1 -1
- package/dist/db/models/userNotificationPreferences.model.d.ts +0 -2
- package/dist/db/models/userNotificationPreferences.model.js +0 -13
- package/dist/db/models/userNotificationPreferences.model.js.map +1 -1
- package/dist/db/models/userNotifications.model.d.ts +5 -2
- package/dist/db/models/userNotifications.model.js +19 -2
- package/dist/db/models/userNotifications.model.js.map +1 -1
- package/dist/db/tables/signInAttempts.table.d.ts +2 -1
- package/dist/db/tables/signInAttempts.table.js +4 -0
- package/dist/db/tables/signInAttempts.table.js.map +1 -1
- package/dist/db/tables/userEmailChanges.table.d.ts +2 -1
- package/dist/db/tables/userEmailChanges.table.js +6 -1
- package/dist/db/tables/userEmailChanges.table.js.map +1 -1
- package/dist/db/tables/userNotificationPreferences.table.d.ts +0 -1
- package/dist/db/tables/userNotificationPreferences.table.js +0 -4
- package/dist/db/tables/userNotificationPreferences.table.js.map +1 -1
- package/dist/implementations/dms/nav-badges.d.ts +6 -4
- package/dist/implementations/dms/nav-badges.js +6 -5
- package/dist/implementations/dms/nav-badges.js.map +1 -1
- package/dist/implementations/dms/page.d.ts +1 -0
- package/dist/implementations/dms/page.js +46 -8
- package/dist/implementations/dms/page.js.map +1 -1
- package/dist/implementations/dms/permission-preview.d.ts +1 -1
- package/dist/implementations/dms/permission-preview.js +9 -4
- package/dist/implementations/dms/permission-preview.js.map +1 -1
- package/dist/implementations/dms-auth/index.d.ts +3 -2
- package/dist/implementations/dms-auth/index.js +39 -35
- package/dist/implementations/dms-auth/index.js.map +1 -1
- package/dist/implementations/dms-auth/token-session.d.ts +3 -0
- package/dist/implementations/dms-auth/token-session.js +22 -0
- package/dist/implementations/dms-auth/token-session.js.map +1 -0
- package/dist/implementations/dms-notifications/index.d.ts +0 -1
- package/dist/implementations/dms-notifications/index.js +0 -7
- package/dist/implementations/dms-notifications/index.js.map +1 -1
- package/dist/pages/settings/settings-index.js +3 -2
- package/dist/pages/settings/settings-index.js.map +1 -1
- package/dist/pages/settings/users/account-activity-feed.d.ts +1 -1
- package/dist/pages/settings/users/account-activity-feed.js +1 -1
- package/dist/pages/settings/users/account-activity-feed.js.map +1 -1
- package/dist/pages/settings/users/account-activity.d.ts +1 -1
- package/dist/pages/settings/users/account-activity.js +1 -1
- package/dist/pages/settings/users/account-activity.js.map +1 -1
- package/dist/pages/settings/users/account-credentials.d.ts +3 -0
- package/dist/pages/settings/users/account-credentials.js +2 -0
- package/dist/pages/settings/users/account-credentials.js.map +1 -1
- package/dist/pages/settings/users/current-password.d.ts +1 -1
- package/dist/pages/settings/users/current-password.js +23 -2
- package/dist/pages/settings/users/current-password.js.map +1 -1
- package/dist/pages/settings/users/email-change.d.ts +1 -1
- package/dist/pages/settings/users/email-change.js +33 -26
- package/dist/pages/settings/users/email-change.js.map +1 -1
- package/dist/pages/settings/users/invite-resend.js +0 -1
- package/dist/pages/settings/users/invite-resend.js.map +1 -1
- package/dist/pages/settings/users/invites.d.ts +1 -2
- package/dist/pages/settings/users/invites.js +21 -19
- package/dist/pages/settings/users/invites.js.map +1 -1
- package/dist/pages/settings/users/member-invite-batch.js +0 -1
- package/dist/pages/settings/users/member-invite-batch.js.map +1 -1
- package/dist/pages/settings/users/member-invite-form.js +10 -22
- package/dist/pages/settings/users/member-invite-form.js.map +1 -1
- package/dist/pages/settings/users/member-role-options.d.ts +6 -4
- package/dist/pages/settings/users/member-role-options.js +15 -4
- package/dist/pages/settings/users/member-role-options.js.map +1 -1
- package/dist/pages/settings/users/members.d.ts +2 -3
- package/dist/pages/settings/users/members.js +7 -12
- package/dist/pages/settings/users/members.js.map +1 -1
- package/dist/pages/settings/users/notifications.d.ts +1 -8
- package/dist/pages/settings/users/notifications.js +6 -38
- package/dist/pages/settings/users/notifications.js.map +1 -1
- package/dist/pages/settings/users/permission-tree-nodes.d.ts +1 -1
- package/dist/pages/settings/users/permission-tree-nodes.js +23 -9
- package/dist/pages/settings/users/permission-tree-nodes.js.map +1 -1
- package/dist/pages/settings/users/permission-warnings.d.ts +7 -0
- package/dist/pages/settings/users/permission-warnings.js +42 -0
- package/dist/pages/settings/users/permission-warnings.js.map +1 -0
- package/dist/pages/settings/users/profile-helpers.d.ts +1 -3
- package/dist/pages/settings/users/profile-helpers.js +0 -16
- package/dist/pages/settings/users/profile-helpers.js.map +1 -1
- package/dist/pages/settings/users/role-editor-store.js +6 -3
- package/dist/pages/settings/users/role-editor-store.js.map +1 -1
- package/dist/pages/settings/users/role-editor.d.ts +2 -1
- package/dist/pages/settings/users/role-editor.js +8 -4
- package/dist/pages/settings/users/role-editor.js.map +1 -1
- package/dist/pages/settings/users/role-preview.js +2 -1
- package/dist/pages/settings/users/role-preview.js.map +1 -1
- package/dist/pages/settings/users/roles.js +5 -1
- package/dist/pages/settings/users/roles.js.map +1 -1
- package/dist/pages/settings/users/security-attention.d.ts +4 -0
- package/dist/pages/settings/users/security-attention.js +23 -7
- package/dist/pages/settings/users/security-attention.js.map +1 -1
- package/dist/pages/settings/users/security.d.ts +2 -1
- package/dist/pages/settings/users/security.js +13 -2
- package/dist/pages/settings/users/security.js.map +1 -1
- package/dist/pages/settings/users/two-factor-operations.d.ts +2 -1
- package/dist/pages/settings/users/two-factor-operations.js +28 -29
- package/dist/pages/settings/users/two-factor-operations.js.map +1 -1
- package/dist/routes/auth/forgot-password.js +3 -0
- package/dist/routes/auth/forgot-password.js.map +1 -1
- package/dist/routes/auth/index.d.ts +1 -0
- package/dist/routes/auth/index.js +1 -0
- package/dist/routes/auth/index.js.map +1 -1
- package/dist/routes/auth/invite.js +28 -4
- package/dist/routes/auth/invite.js.map +1 -1
- package/dist/routes/auth/login-throttle.d.ts +2 -0
- package/dist/routes/auth/login-throttle.js +5 -4
- package/dist/routes/auth/login-throttle.js.map +1 -1
- package/dist/routes/auth/request-2fa-email.js +6 -18
- package/dist/routes/auth/request-2fa-email.js.map +1 -1
- package/dist/routes/auth/reset-code.d.ts +3 -0
- package/dist/routes/auth/reset-code.js +37 -0
- package/dist/routes/auth/reset-code.js.map +1 -0
- package/dist/routes/auth/reset-password.d.ts +2 -2
- package/dist/routes/auth/reset-password.js +5 -10
- package/dist/routes/auth/reset-password.js.map +1 -1
- package/dist/routes/auth/signup.js +10 -32
- package/dist/routes/auth/signup.js.map +1 -1
- package/dist/routes/auth/two-factor-throttle.d.ts +5 -0
- package/dist/routes/auth/two-factor-throttle.js +81 -0
- package/dist/routes/auth/two-factor-throttle.js.map +1 -0
- package/dist/routes/auth/validate-forgot-password-token.js +2 -8
- package/dist/routes/auth/validate-forgot-password-token.js.map +1 -1
- package/dist/routes/auth/validate-invite-token.d.ts +1 -0
- package/dist/routes/auth/validate-invite-token.js +11 -0
- package/dist/routes/auth/validate-invite-token.js.map +1 -0
- package/dist/routes/auth/verify-2fa.js +10 -13
- package/dist/routes/auth/verify-2fa.js.map +1 -1
- package/dist/routes/auth.d.ts +1 -0
- package/dist/routes/auth.js +11 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/test/helpers/auth.d.ts +0 -1
- package/dist/test/helpers/auth.js +0 -1
- package/dist/test/helpers/auth.js.map +1 -1
- package/dist/test/helpers/emails.d.ts +10 -0
- package/dist/test/helpers/emails.js +36 -0
- package/dist/test/helpers/emails.js.map +1 -0
- package/dist/test/helpers/fixtures.d.ts +0 -1
- package/dist/test/helpers/fixtures.js +1 -2
- package/dist/test/helpers/fixtures.js.map +1 -1
- package/dist/test/helpers/page-access.d.ts +1 -0
- package/dist/test/helpers/page-access.js +6 -1
- package/dist/test/helpers/page-access.js.map +1 -1
- package/dist/test/integration/auth/current-password.test.d.ts +1 -0
- package/dist/test/integration/auth/current-password.test.js +65 -0
- package/dist/test/integration/auth/current-password.test.js.map +1 -0
- package/dist/test/integration/auth/password-reset.test.d.ts +1 -0
- package/dist/test/integration/auth/password-reset.test.js +126 -0
- package/dist/test/integration/auth/password-reset.test.js.map +1 -0
- package/dist/test/integration/auth/session-revocation.test.d.ts +1 -0
- package/dist/test/integration/auth/session-revocation.test.js +45 -0
- package/dist/test/integration/auth/session-revocation.test.js.map +1 -0
- package/dist/test/integration/auth/two-factor-codes.test.d.ts +1 -0
- package/dist/test/integration/auth/two-factor-codes.test.js +335 -0
- package/dist/test/integration/auth/two-factor-codes.test.js.map +1 -0
- package/dist/test/integration/auth/two-factor-password.test.js +5 -1
- package/dist/test/integration/auth/two-factor-password.test.js.map +1 -1
- package/dist/test/integration/auth/two-factor-token.test.d.ts +1 -0
- package/dist/test/integration/auth/two-factor-token.test.js +92 -0
- package/dist/test/integration/auth/two-factor-token.test.js.map +1 -0
- package/dist/test/integration/email-change.test.js +36 -0
- package/dist/test/integration/email-change.test.js.map +1 -1
- package/dist/test/integration/invite-extension-edit.test.js +0 -1
- package/dist/test/integration/invite-extension-edit.test.js.map +1 -1
- package/dist/test/integration/invite-link-status.test.d.ts +1 -0
- package/dist/test/integration/invite-link-status.test.js +110 -0
- package/dist/test/integration/invite-link-status.test.js.map +1 -0
- package/dist/test/integration/invite-resolution.test.js +0 -3
- package/dist/test/integration/invite-resolution.test.js.map +1 -1
- package/dist/test/integration/member-settings-access.test.js +17 -0
- package/dist/test/integration/member-settings-access.test.js.map +1 -1
- package/dist/test/integration/notification-unread-badge.test.d.ts +1 -0
- package/dist/test/integration/notification-unread-badge.test.js +92 -0
- package/dist/test/integration/notification-unread-badge.test.js.map +1 -0
- package/dist/test/integration/permission-warnings.test.d.ts +1 -0
- package/dist/test/integration/permission-warnings.test.js +71 -0
- package/dist/test/integration/permission-warnings.test.js.map +1 -0
- package/dist/test/integration/removed-member-notifications.test.d.ts +1 -0
- package/dist/test/integration/removed-member-notifications.test.js +80 -0
- package/dist/test/integration/removed-member-notifications.test.js.map +1 -0
- package/dist/test/integration/role-permission-ancestors.test.d.ts +1 -0
- package/dist/test/integration/role-permission-ancestors.test.js +146 -0
- package/dist/test/integration/role-permission-ancestors.test.js.map +1 -0
- package/dist/test/integration/tenant-lifecycle.test.js +0 -4
- package/dist/test/integration/tenant-lifecycle.test.js.map +1 -1
- package/dist/test/unit/auth-session-revocation.test.d.ts +1 -0
- package/dist/test/unit/auth-session-revocation.test.js +105 -0
- package/dist/test/unit/auth-session-revocation.test.js.map +1 -0
- package/dist/test/unit/db/email-normalization.test.js +0 -1
- package/dist/test/unit/db/email-normalization.test.js.map +1 -1
- package/dist/test/unit/db/notification-feed-filter.test.js +0 -16
- package/dist/test/unit/db/notification-feed-filter.test.js.map +1 -1
- package/dist/test/unit/db/notification-inbox.test.js +63 -13
- package/dist/test/unit/db/notification-inbox.test.js.map +1 -1
- package/dist/test/unit/db/notification-preferences.test.js +0 -17
- package/dist/test/unit/db/notification-preferences.test.js.map +1 -1
- package/dist/test/unit/implementations/dms/empty-menu-group.test.d.ts +1 -0
- package/dist/test/unit/implementations/dms/empty-menu-group.test.js +133 -0
- package/dist/test/unit/implementations/dms/empty-menu-group.test.js.map +1 -0
- package/dist/test/unit/implementations/dms/layout-banners.test.js +2 -1
- package/dist/test/unit/implementations/dms/layout-banners.test.js.map +1 -1
- package/dist/test/unit/implementations/dms/menu-hidden-blocks.test.d.ts +1 -0
- package/dist/test/unit/implementations/dms/menu-hidden-blocks.test.js +149 -0
- package/dist/test/unit/implementations/dms/menu-hidden-blocks.test.js.map +1 -0
- package/dist/test/unit/implementations/dms/nav-badges.test.js +55 -4
- package/dist/test/unit/implementations/dms/nav-badges.test.js.map +1 -1
- package/dist/test/unit/implementations/dms/page-all-components-hidden.test.d.ts +1 -0
- package/dist/test/unit/implementations/dms/page-all-components-hidden.test.js +118 -0
- package/dist/test/unit/implementations/dms/page-all-components-hidden.test.js.map +1 -0
- package/dist/test/unit/implementations/dms/permission-preview-aggregate.test.js +16 -0
- package/dist/test/unit/implementations/dms/permission-preview-aggregate.test.js.map +1 -1
- package/dist/test/unit/implementations/dms/permission-preview-cost.test.js +5 -3
- package/dist/test/unit/implementations/dms/permission-preview-cost.test.js.map +1 -1
- package/dist/test/unit/implementations/dms/permission-preview-menu.test.js +29 -3
- package/dist/test/unit/implementations/dms/permission-preview-menu.test.js.map +1 -1
- package/dist/test/unit/implementations/dms/quick-actions-button.test.js +4 -2
- package/dist/test/unit/implementations/dms/quick-actions-button.test.js.map +1 -1
- package/dist/test/unit/implementations/dms/user-permissions-gate.test.js +2 -1
- package/dist/test/unit/implementations/dms/user-permissions-gate.test.js.map +1 -1
- package/dist/test/unit/implementations/dms-base/table-view-shared-controller.test.js +2 -1
- package/dist/test/unit/implementations/dms-base/table-view-shared-controller.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms/component-children-permissions.test.js +7 -2
- package/dist/test/unit/interfaces/dms/component-children-permissions.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms/form-watch-permissions.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms/form-watch-permissions.test.js +133 -0
- package/dist/test/unit/interfaces/dms/form-watch-permissions.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/has-permission-ancestors.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms/has-permission-ancestors.test.js +149 -0
- package/dist/test/unit/interfaces/dms/has-permission-ancestors.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/invite-extension.test.js +13 -0
- package/dist/test/unit/interfaces/dms/invite-extension.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms/member-access.test.js +27 -1
- package/dist/test/unit/interfaces/dms/member-access.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms/nav-badge-tones.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms/nav-badge-tones.test.js +31 -0
- package/dist/test/unit/interfaces/dms/nav-badge-tones.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/page-extension.test.js +4 -1
- package/dist/test/unit/interfaces/dms/page-extension.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms/permission-requirements.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms/permission-requirements.test.js +144 -0
- package/dist/test/unit/interfaces/dms/permission-requirements.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/layout-header-actions.test.js +6 -2
- package/dist/test/unit/interfaces/dms-base/layout-header-actions.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/lists-and-settings-catalog.test.js +1 -1
- package/dist/test/unit/interfaces/dms-base/lists-and-settings-catalog.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-export-permission.test.js +2 -1
- package/dist/test/unit/interfaces/dms-base/table-view-export-permission.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-reduced-chrome.test.js +2 -1
- package/dist/test/unit/interfaces/dms-base/table-view-reduced-chrome.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-shared-controller-permissions.test.js +2 -1
- package/dist/test/unit/interfaces/dms-base/table-view-shared-controller-permissions.test.js.map +1 -1
- package/dist/test/unit/pages/settings/account-activity-feed.test.js +2 -2
- package/dist/test/unit/pages/settings/account-activity-feed.test.js.map +1 -1
- package/dist/test/unit/pages/settings/account-activity.test.js +11 -2
- package/dist/test/unit/pages/settings/account-activity.test.js.map +1 -1
- package/dist/test/unit/pages/settings/invite-email-delivery.test.js +0 -1
- package/dist/test/unit/pages/settings/invite-email-delivery.test.js.map +1 -1
- package/dist/test/unit/pages/settings/invite-email-validation-option.test.d.ts +1 -0
- package/dist/test/unit/pages/settings/invite-email-validation-option.test.js +33 -0
- package/dist/test/unit/pages/settings/invite-email-validation-option.test.js.map +1 -0
- package/dist/test/unit/pages/settings/member-lists-page-size.test.d.ts +1 -0
- package/dist/test/unit/pages/settings/member-lists-page-size.test.js +22 -0
- package/dist/test/unit/pages/settings/member-lists-page-size.test.js.map +1 -0
- package/dist/test/unit/pages/settings/member-table-widths.test.js +2 -2
- package/dist/test/unit/pages/settings/member-table-widths.test.js.map +1 -1
- package/dist/test/unit/pages/settings/members-page.test.js +7 -10
- package/dist/test/unit/pages/settings/members-page.test.js.map +1 -1
- package/dist/test/unit/pages/settings/notifications-access-gate.test.js +3 -10
- package/dist/test/unit/pages/settings/notifications-access-gate.test.js.map +1 -1
- package/dist/test/unit/pages/settings/permission-tree-nodes.test.js +57 -0
- package/dist/test/unit/pages/settings/permission-tree-nodes.test.js.map +1 -1
- package/dist/test/unit/pages/settings/permission-warnings.test.d.ts +1 -0
- package/dist/test/unit/pages/settings/permission-warnings.test.js +49 -0
- package/dist/test/unit/pages/settings/permission-warnings.test.js.map +1 -0
- package/dist/test/unit/pages/settings/role-editor.test.js +16 -0
- package/dist/test/unit/pages/settings/role-editor.test.js.map +1 -1
- package/dist/test/unit/pages/settings/role-preview.test.js +7 -0
- package/dist/test/unit/pages/settings/role-preview.test.js.map +1 -1
- package/dist/test/unit/pages/settings/security-attention.test.d.ts +1 -0
- package/dist/test/unit/pages/settings/security-attention.test.js +74 -0
- package/dist/test/unit/pages/settings/security-attention.test.js.map +1 -0
- package/dist/test/unit/sanitize-user.test.d.ts +1 -0
- package/dist/test/unit/sanitize-user.test.js +21 -0
- package/dist/test/unit/sanitize-user.test.js.map +1 -0
- package/dist/test/unit/signup-email-validation.test.d.ts +1 -0
- package/dist/test/unit/signup-email-validation.test.js +79 -0
- package/dist/test/unit/signup-email-validation.test.js.map +1 -0
- package/dist/test/unit/validation/member-invite.schema.test.js +14 -52
- package/dist/test/unit/validation/member-invite.schema.test.js.map +1 -1
- package/dist/utils/account-notifications.d.ts +5 -0
- package/dist/utils/account-notifications.js +8 -0
- package/dist/utils/account-notifications.js.map +1 -1
- package/dist/utils/notification-emitter.d.ts +1 -1
- package/dist/utils/notification-emitter.js +1 -1
- package/dist/utils/notification-emitter.js.map +1 -1
- package/dist/utils/notification-tones.d.ts +2 -1
- package/dist/utils/notification-tones.js +5 -1
- package/dist/utils/notification-tones.js.map +1 -1
- package/dist/utils/one-time-code.d.ts +3 -0
- package/dist/utils/one-time-code.js +21 -0
- package/dist/utils/one-time-code.js.map +1 -0
- package/dist/utils/sign-in-monitor.d.ts +1 -0
- package/dist/utils/sign-in-monitor.js +3 -2
- package/dist/utils/sign-in-monitor.js.map +1 -1
- package/dist/utils/two-factor-codes.d.ts +10 -0
- package/dist/utils/two-factor-codes.js +76 -0
- package/dist/utils/two-factor-codes.js.map +1 -0
- package/dist/validation/auth.schema.d.ts +17 -0
- package/dist/validation/auth.schema.js +17 -6
- package/dist/validation/auth.schema.js.map +1 -1
- package/dist/validation/issue-message.d.ts +1 -0
- package/dist/validation/issue-message.js +9 -0
- package/dist/validation/issue-message.js.map +1 -0
- package/dist/validation/member-invite.schema.d.ts +1 -25
- package/dist/validation/member-invite.schema.js +2 -23
- package/dist/validation/member-invite.schema.js.map +1 -1
- package/frontend-vue/dms.frontend.ts +2 -0
- package/frontend-vue/layers/dms-auth/app/custom-pages/auth/forgot-validation.vue +3 -0
- package/frontend-vue/layers/dms-auth/app/custom-pages/auth/signup.vue +105 -5
- package/frontend-vue/layers/dms-auth/i18n/locales/auth-en-GB.json +20 -4
- package/frontend-vue/layers/dms-auth/i18n/locales/auth-fr-FR.json +20 -4
- package/frontend-vue/layers/dms-core/app/composables/useFieldErrors.ts +3 -2
- package/frontend-vue/layers/dms-core/app/types/menu.ts +15 -0
- package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +4 -1
- package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +4 -1
- package/frontend-vue/layers/dms-layout/app/assets/css/main.css +20 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/CommandPaletteAssistantAnswer.vue +75 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardFrame.vue +22 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +24 -10
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidePanel.vue +139 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/Footer.vue +4 -2
- package/frontend-vue/layers/dms-layout/app/build/components/layout/GithubStarPrompt.vue +90 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/SidePanelHost.vue +17 -0
- package/frontend-vue/layers/dms-layout/app/build/components/notification/NotificationPopover.vue +25 -43
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/members/MemberRolePicker.vue +24 -2
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/notification/NotificationMatrixCategory.vue +70 -25
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/notification/NotificationPreferencesForm.vue +25 -10
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/notification/notificationDisplay.ts +41 -5
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfilePreferencesSummary.vue +2 -1
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfileSecuritySummary.vue +20 -4
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/RoleEditor.vue +21 -0
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/RolePermissionArea.vue +16 -2
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/RolePermissionBranch.vue +1 -0
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/RolePermissionLeaf.vue +13 -1
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/RolePermissionTree.vue +9 -0
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/RolePermissionWarning.vue +46 -0
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/role-permissions.ts +108 -29
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/role-types.ts +2 -0
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityDialogFrame.vue +6 -6
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityEmail.vue +7 -1
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecuritySessions.vue +5 -4
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityStatus.vue +4 -3
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityTwoFactor.vue +54 -18
- package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/shell/SettingsNav.vue +13 -8
- package/frontend-vue/layers/dms-layout/app/build/composables/command-palette/assistantGroups.ts +143 -0
- package/frontend-vue/layers/dms-layout/app/build/composables/command-palette/useCommandPaletteAssistantMode.ts +249 -0
- package/frontend-vue/layers/dms-layout/app/build/composables/general/useGithubStarPrompt.ts +178 -0
- package/frontend-vue/layers/dms-layout/app/build/composables/layout/sidePanelState.ts +191 -0
- package/frontend-vue/layers/dms-layout/app/build/composables/layout/useHeaderActionControls.ts +51 -0
- package/frontend-vue/layers/dms-layout/app/build/composables/layout/useSidePanelWidth.ts +113 -0
- package/frontend-vue/layers/dms-layout/app/build/composables/navigation/useCategoryNavCards.ts +17 -10
- package/frontend-vue/layers/dms-layout/app/build/composables/notification/useNotificationGroupsOpen.ts +45 -0
- package/frontend-vue/layers/dms-layout/app/build/composables/settings/profile/useProfilePreferences.ts +8 -1
- package/frontend-vue/layers/dms-layout/app/build/composables/settings/security/useSecurityOverview.ts +50 -3
- package/frontend-vue/layers/dms-layout/app/build/composables/settings/useSettingsNavigation.ts +3 -0
- package/frontend-vue/layers/dms-layout/app/build/utils/categoryPages.ts +1 -2
- package/frontend-vue/layers/dms-layout/app/build/utils/github-repository.ts +5 -0
- package/frontend-vue/layers/dms-layout/app/components/layout/DashboardSearch.vue +109 -7
- package/frontend-vue/layers/dms-layout/app/components/navigation/NavigationMenu.vue +19 -9
- package/frontend-vue/layers/dms-layout/app/composables/notification/useNotifications.ts +22 -40
- package/frontend-vue/layers/dms-layout/app/composables/useAppSidePanels.ts +96 -0
- package/frontend-vue/layers/dms-layout/app/composables/useCommandPaletteAssistant.ts +129 -0
- package/frontend-vue/layers/dms-layout/app/composables/useHeaderActions.ts +33 -11
- package/frontend-vue/layers/dms-layout/app/composables/useSidePanel.ts +41 -0
- package/frontend-vue/layers/dms-layout/app/pages/[...slug].vue +15 -0
- package/frontend-vue/layers/dms-layout/app/plugins/notification-stream.client.ts +1 -7
- package/frontend-vue/layers/dms-layout/app/plugins/side-panel-host.ts +13 -0
- package/frontend-vue/layers/dms-layout/app/types/page.ts +4 -0
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +43 -13
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +43 -13
- package/frontend-vue/layers/dms-ui/app/build/components/form/FormLoadError.vue +45 -0
- package/frontend-vue/layers/dms-ui/app/build/components/modal/ModalEscHint.vue +28 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/form/floatingSaveBars.ts +38 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/form/formRecordLoad.ts +66 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/navigation/useNavBadges.ts +50 -9
- package/frontend-vue/layers/dms-ui/app/build/composables/table/useTable.ts +7 -1
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/chrome.ts +2 -2
- package/frontend-vue/layers/dms-ui/app/build/types/tree.ts +14 -10
- package/frontend-vue/layers/dms-ui/app/build/utils/navBadge.ts +12 -0
- package/frontend-vue/layers/dms-ui/app/build/utils/tone.ts +22 -0
- package/frontend-vue/layers/dms-ui/app/components/activity-feed/ActivityFeed.vue +117 -82
- package/frontend-vue/layers/dms-ui/app/components/blocks/NavCardGridBlock.vue +12 -1
- package/frontend-vue/layers/dms-ui/app/components/card/NavCard.vue +16 -1
- package/frontend-vue/layers/dms-ui/app/components/confirm/ConfirmModal.vue +7 -8
- package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +28 -6
- package/frontend-vue/layers/dms-ui/app/components/form/components/Display.vue +5 -1
- package/frontend-vue/layers/dms-ui/app/components/save-bar/SaveBar.vue +4 -0
- package/frontend-vue/layers/dms-ui/app/components/status-pill/StatusPill.vue +7 -2
- package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +7 -2
- package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +48 -34
- package/frontend-vue/layers/dms-ui/app/composables/table-view/types/config.ts +13 -3
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +16 -14
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +16 -14
- package/frontend-vue/package.json +2 -2
- package/frontend-vue/pnpm-lock.yaml +5 -5
- package/frontend-vue/tests/activity-feed-fill-height.test.ts +107 -0
- package/frontend-vue/tests/category-nav-cards.test.ts +21 -13
- package/frontend-vue/tests/command-palette-assistant.test.ts +344 -0
- package/frontend-vue/tests/fixtures/dashboard-search-stub.ts +91 -0
- package/frontend-vue/tests/forgot-validation-resend.test.ts +234 -0
- package/frontend-vue/tests/form-display-options.test.ts +64 -0
- package/frontend-vue/tests/form-load-error.test.ts +160 -0
- package/frontend-vue/tests/form-saved-before-success.test.ts +110 -0
- package/frontend-vue/tests/github-star-prompt.test.ts +328 -0
- package/frontend-vue/tests/header-actions.test.ts +191 -0
- package/frontend-vue/tests/invites-edit-modal.test.ts +157 -0
- package/frontend-vue/tests/member-role-picker.test.ts +26 -0
- package/frontend-vue/tests/menu-hidden-page.test.ts +93 -0
- package/frontend-vue/tests/nav-badge-tones.test.ts +274 -0
- package/frontend-vue/tests/nav-card-badge.test.ts +69 -0
- package/frontend-vue/tests/nav-card-grid-empty-category.test.ts +163 -0
- package/frontend-vue/tests/notification-popover-errors.test.ts +71 -37
- package/frontend-vue/tests/notification-preferences-groups.test.ts +268 -0
- package/frontend-vue/tests/notification-tone-contract.test.ts +70 -0
- package/frontend-vue/tests/page-fill-height.test.ts +9 -1
- package/frontend-vue/tests/page-no-visible-blocks.test.ts +202 -0
- package/frontend-vue/tests/profile-preferences-summary.test.ts +26 -2
- package/frontend-vue/tests/profile-security-summary.test.ts +121 -0
- package/frontend-vue/tests/role-permission-tree.test.ts +102 -8
- package/frontend-vue/tests/role-permissions.test.ts +178 -56
- package/frontend-vue/tests/side-panels.test.ts +470 -0
- package/frontend-vue/tests/signup-invitation-link.test.ts +71 -2
- package/frontend-vue/tests/table-actions-column-width.test.ts +51 -1
- package/frontend-vue/tests/table-view-chrome.test.ts +2 -2
- package/frontend-vue/tests/vue-inventory.test.ts +1 -1
- package/package.json +1 -1
- package/skills/dms/REFERENCE.md +1 -1
|
@@ -8,6 +8,7 @@ export interface RoleEditorPermissionNode {
|
|
|
8
8
|
icon?: string;
|
|
9
9
|
description?: string;
|
|
10
10
|
dependencies?: string[];
|
|
11
|
+
warning?: string;
|
|
11
12
|
children?: RoleEditorPermissionNode[];
|
|
12
13
|
}
|
|
13
14
|
export interface RoleMemberPreview {
|
|
@@ -48,7 +49,7 @@ export interface RoleSummarySource {
|
|
|
48
49
|
knownPermissionIds: Set<string>;
|
|
49
50
|
now: Date;
|
|
50
51
|
}
|
|
51
|
-
export declare function mapRoleEditorTree(permissionTree: Record<string, PermissionTree>, categoryIds?: ReadonlySet<string>): RoleEditorPermissionNode[];
|
|
52
|
+
export declare function mapRoleEditorTree(permissionTree: Record<string, PermissionTree>, categoryIds?: ReadonlySet<string>, entryIds?: ReadonlySet<string>): RoleEditorPermissionNode[];
|
|
52
53
|
export declare const SETTINGS_ROOT_PERMISSION_ID = "settings";
|
|
53
54
|
export declare function orderRoleEditorTree(nodes: RoleEditorPermissionNode[], menuOrder: Map<string, number>): RoleEditorPermissionNode[];
|
|
54
55
|
export declare function collectPermissionIds(nodes: RoleEditorPermissionNode[]): string[];
|
|
@@ -13,7 +13,7 @@ exports.countRoleHolders = countRoleHolders;
|
|
|
13
13
|
const permission_tree_nodes_1 = require("./permission-tree-nodes");
|
|
14
14
|
exports.ROLE_MEMBER_PREVIEW_LIMIT = 3;
|
|
15
15
|
exports.ALL_PERMISSIONS = "*";
|
|
16
|
-
function mapRoleEditorTree(permissionTree, categoryIds) {
|
|
16
|
+
function mapRoleEditorTree(permissionTree, categoryIds, entryIds) {
|
|
17
17
|
return (0, permission_tree_nodes_1.mapPermissionTree)(permissionTree, (permission, children) => ({
|
|
18
18
|
id: permission.id,
|
|
19
19
|
label: (0, permission_tree_nodes_1.permissionLabel)(permission),
|
|
@@ -21,9 +21,13 @@ function mapRoleEditorTree(permissionTree, categoryIds) {
|
|
|
21
21
|
description: permission.description,
|
|
22
22
|
dependencies: permission.dependencies,
|
|
23
23
|
children,
|
|
24
|
-
}), categoryIds);
|
|
24
|
+
}), categoryIds, entryIds);
|
|
25
25
|
}
|
|
26
26
|
exports.SETTINGS_ROOT_PERMISSION_ID = "settings";
|
|
27
|
+
function isUnderSettingsRoot(node) {
|
|
28
|
+
return (node.id === exports.SETTINGS_ROOT_PERMISSION_ID ||
|
|
29
|
+
node.id.startsWith(`${exports.SETTINGS_ROOT_PERMISSION_ID}.`));
|
|
30
|
+
}
|
|
27
31
|
function sortSiblingsByMenuOrder(nodes, menuOrder) {
|
|
28
32
|
const unlisted = nodes.filter((node) => !menuOrder.has(node.id));
|
|
29
33
|
const listed = nodes
|
|
@@ -39,8 +43,8 @@ function orderBranch(nodes, menuOrder) {
|
|
|
39
43
|
function orderRoleEditorTree(nodes, menuOrder) {
|
|
40
44
|
const ordered = orderBranch(nodes, menuOrder);
|
|
41
45
|
return [
|
|
42
|
-
...ordered.filter((node) => node
|
|
43
|
-
...ordered.filter(
|
|
46
|
+
...ordered.filter((node) => !isUnderSettingsRoot(node)),
|
|
47
|
+
...ordered.filter(isUnderSettingsRoot),
|
|
44
48
|
];
|
|
45
49
|
}
|
|
46
50
|
function collectPermissionIds(nodes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-editor.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/role-editor.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"role-editor.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/role-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ exports.listPreviewPermissionIds = listPreviewPermissionIds;
|
|
|
8
8
|
exports.classifyPreviewBlocks = classifyPreviewBlocks;
|
|
9
9
|
exports.countOutOfScope = countOutOfScope;
|
|
10
10
|
exports.losesOnPreviewPage = losesOnPreviewPage;
|
|
11
|
+
const permission_ids_1 = require("@antelopejs/interface-dms/internal/permission-ids");
|
|
11
12
|
const role_editor_1 = require("./role-editor");
|
|
12
13
|
const ID_SEPARATOR = ".";
|
|
13
14
|
const READ_ACTION_IDS = new Set(["list", "view", "details", "read"]);
|
|
@@ -15,7 +16,7 @@ function isReadAction(permissionId) {
|
|
|
15
16
|
return READ_ACTION_IDS.has(permissionId.split(ID_SEPARATOR).at(-1) ?? "");
|
|
16
17
|
}
|
|
17
18
|
function sanitizePreviewPermissions(permissions) {
|
|
18
|
-
return new Set(permissions.filter((id) => id.length > 0 && id !== role_editor_1.ALL_PERMISSIONS));
|
|
19
|
+
return new Set((0, permission_ids_1.withPermissionAncestors)(permissions).filter((id) => id.length > 0 && id !== role_editor_1.ALL_PERMISSIONS));
|
|
19
20
|
}
|
|
20
21
|
function findPermissionNode(tree, permissionId) {
|
|
21
22
|
const [head, ...rest] = permissionId.split(ID_SEPARATOR);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-preview.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/role-preview.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"role-preview.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/role-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ const page_2 = require("../../../implementations/dms/page");
|
|
|
32
32
|
const workspace_notifications_1 = require("../../../utils/workspace-notifications");
|
|
33
33
|
const role_editor_schema_1 = require("../../../validation/role-editor.schema");
|
|
34
34
|
const role_editor_store_1 = require("./role-editor-store");
|
|
35
|
+
const permission_warnings_1 = require("./permission-warnings");
|
|
35
36
|
const role_preview_1 = require("./role-preview");
|
|
36
37
|
const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
|
|
37
38
|
(0, interface_data_api_1.RegisterDataController)()(roles_1.roleSettingDataAPI);
|
|
@@ -61,6 +62,9 @@ const listAction = requireEditorAction("list");
|
|
|
61
62
|
const addAction = requireEditorAction("add");
|
|
62
63
|
const editAction = requireEditorAction("edit");
|
|
63
64
|
const deleteAction = requireEditorAction("delete");
|
|
65
|
+
(0, permission_warnings_1.declarePermissionWarning)(editAction, "$page.settings.roles.warning.roles");
|
|
66
|
+
(0, permission_warnings_1.declarePermissionWarning)(addAction, "$page.settings.roles.warning.roles_add");
|
|
67
|
+
(0, permission_warnings_1.declarePermissionWarning)(deleteAction, "$page.settings.roles.warning.roles_delete");
|
|
64
68
|
async function resolveActor(ctx, user) {
|
|
65
69
|
const tenantId = (0, request_tenant_1.getRequestTenantId)(ctx);
|
|
66
70
|
const member = await (0, interface_database_decorators_1.GetModel)(db_1.TenantMemberModel, tenantId).getByUser(user._id);
|
|
@@ -156,7 +160,7 @@ let RolesSettingsController = class RolesSettingsController extends (0, page_1.P
|
|
|
156
160
|
displayName: "$menu.roles",
|
|
157
161
|
category: page_1.workspaceSettingsCategory,
|
|
158
162
|
icon: "i-ph-key",
|
|
159
|
-
order:
|
|
163
|
+
order: 3,
|
|
160
164
|
description: "$page.settings.description.roles",
|
|
161
165
|
}) {
|
|
162
166
|
static table = exports.rolesEditor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/roles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAQmC;AACnC,uEAA0E;AAC1E,+DAAyD;AACzD,uEAAwE;AACxE,6FAAqE;AAErE,0EAImD;AACnD,wGAA8G;AAC9G,mEAG6C;AAC7C,4EAAsF;AACtF,qDAA4E;AAC5E,6DAA0E;AAC1E,yDAIwC;AACxC,uEAK+C;AAC/C,yFAA2F;AAC3F,6EAA8E;AAC9E,4DAK2C;AAC3C,oFAAsF;AACtF,+EAIgD;AAMhD,2DAS6B;AAC7B,iDAUwB;AACxB,qFAAgF;AAEhF,IAAA,2CAAsB,GAAE,CAAC,0BAAkB,CAAC,CAAC;AAE7C,MAAM,2BAA2B,GAAG,kBAAkB,CAAC;AAa1C,QAAA,WAAW,GAAG,IAAI,4BAAgB,CAC7C,2BAA2B,CAC5B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oCAAoC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAEzE,IAAA,0CAAwB,EAAC,mBAAW,EAAE;IACpC,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,IAAI;IACvB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,IAAI;CACtB,CAAC,CAAC;AAKH,MAAM,SAAS,GAAG,IAAA,4BAAW,EAAC,0BAAkB,EAAE,0BAAa,CAAC,CAAC;AACjE,SAAS,CAAC,mBAAmB,CAAC,mBAAW,CAAC,CAAC;AAC3C,SAAS,CAAC,mBAAmB,CAAC;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAC/B,IAAA,uCAAmB,EAAC,IAAA,mCAAkB,EAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;CAC5D,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,EAAU;IACrC,MAAM,MAAM,GAAG,mBAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC7C,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/roles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type { NavBadgeCount } from "@antelopejs/interface-dms/component";
|
|
2
|
+
import type { NotificationTone } from "@antelopejs/interface-dms/notifications/types";
|
|
1
3
|
import type { TwoFactorStatus } from "./two-factor-operations";
|
|
2
4
|
export type SecurityAttention = "two_factor_off" | "backup_codes_unsaved" | "backup_codes_low";
|
|
3
5
|
export declare function securityAttention(twoFactor: TwoFactorStatus): SecurityAttention[];
|
|
6
|
+
export declare function securityAttentionTones(twoFactor: TwoFactorStatus): Partial<Record<SecurityAttention, NotificationTone>>;
|
|
7
|
+
export declare function securityAttentionBadge(twoFactor: TwoFactorStatus): NavBadgeCount;
|
|
@@ -1,22 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.securityAttention = securityAttention;
|
|
4
|
-
|
|
4
|
+
exports.securityAttentionTones = securityAttentionTones;
|
|
5
|
+
exports.securityAttentionBadge = securityAttentionBadge;
|
|
6
|
+
const nav_badges_1 = require("@antelopejs/interface-dms/page/internal/nav-badges");
|
|
7
|
+
const notification_tones_1 = require("../../../utils/notification-tones");
|
|
5
8
|
const isTwoFactorOn = (twoFactor) => twoFactor.methods.length > 0;
|
|
6
9
|
const ATTENTION_RULES = [
|
|
7
|
-
{
|
|
10
|
+
{
|
|
11
|
+
id: "two_factor_off",
|
|
12
|
+
tone: "warning",
|
|
13
|
+
applies: (twoFactor) => !isTwoFactorOn(twoFactor),
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "backup_codes_low",
|
|
17
|
+
tone: "error",
|
|
18
|
+
applies: (twoFactor) => isTwoFactorOn(twoFactor) && twoFactor.backupCodesLeft <= notification_tones_1.LOW_BACKUP_CODES,
|
|
19
|
+
},
|
|
8
20
|
{
|
|
9
21
|
id: "backup_codes_unsaved",
|
|
22
|
+
tone: "warning",
|
|
10
23
|
applies: (twoFactor) => twoFactor.hasBackupCodes &&
|
|
11
24
|
!!twoFactor.backupCodesGeneratedAt &&
|
|
12
25
|
!twoFactor.backupCodesSavedAt,
|
|
13
26
|
},
|
|
14
|
-
{
|
|
15
|
-
id: "backup_codes_low",
|
|
16
|
-
applies: (twoFactor) => isTwoFactorOn(twoFactor) && twoFactor.backupCodesLeft <= LOW_BACKUP_CODES,
|
|
17
|
-
},
|
|
18
27
|
];
|
|
28
|
+
const applyingRules = (twoFactor) => ATTENTION_RULES.filter((rule) => rule.applies(twoFactor));
|
|
19
29
|
function securityAttention(twoFactor) {
|
|
20
|
-
return
|
|
30
|
+
return applyingRules(twoFactor).map((rule) => rule.id);
|
|
31
|
+
}
|
|
32
|
+
function securityAttentionTones(twoFactor) {
|
|
33
|
+
return Object.fromEntries(applyingRules(twoFactor).map(({ id, tone }) => [id, tone]));
|
|
34
|
+
}
|
|
35
|
+
function securityAttentionBadge(twoFactor) {
|
|
36
|
+
return (0, nav_badges_1.combineNavBadgeCounts)(applyingRules(twoFactor).map(({ tone }) => ({ count: 1, tone })));
|
|
21
37
|
}
|
|
22
38
|
//# sourceMappingURL=security-attention.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-attention.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/security-attention.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"security-attention.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/security-attention.ts"],"names":[],"mappings":";;AA4DA,8CAIC;AAMD,wDAMC;AAMD,wDAMC;AAtFD,mFAA2F;AAC3F,0EAAqE;AAmBrE,MAAM,aAAa,GAAG,CAAC,SAA0B,EAAW,EAAE,CAC5D,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAO/B,MAAM,eAAe,GAAoB;IACvC;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC;KAClD;IAED;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CACrB,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,eAAe,IAAI,qCAAgB;KAC5E;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CACrB,SAAS,CAAC,cAAc;YACxB,CAAC,CAAC,SAAS,CAAC,sBAAsB;YAClC,CAAC,SAAS,CAAC,kBAAkB;KAChC;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,SAA0B,EAAmB,EAAE,CACpE,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAM5D,SAAgB,iBAAiB,CAC/B,SAA0B;IAE1B,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC;AAMD,SAAgB,sBAAsB,CACpC,SAA0B;IAE1B,OAAO,MAAM,CAAC,WAAW,CACvB,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3D,CAAC;AACJ,CAAC;AAMD,SAAgB,sBAAsB,CACpC,SAA0B;IAE1B,OAAO,IAAA,kCAAqB,EAC1B,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC"}
|
|
@@ -19,7 +19,8 @@ export declare class SecuritySettingsController extends SecuritySettingsControll
|
|
|
19
19
|
getTwoFactorStatus(): import("./two-factor-operations").TwoFactorStatus;
|
|
20
20
|
enableTotp(body: unknown, userModel: UserModel): Promise<import("./two-factor-operations").TotpSetup>;
|
|
21
21
|
confirmTotp(body: unknown, userModel: UserModel): Promise<import("./two-factor-operations").MethodEnabledResult>;
|
|
22
|
-
enableEmail(body: unknown, userModel: UserModel): Promise<import("./two-factor-operations").
|
|
22
|
+
enableEmail(body: unknown, userModel: UserModel): Promise<import("./two-factor-operations").SuccessResult>;
|
|
23
|
+
confirmEmail(body: unknown, userModel: UserModel): Promise<import("./two-factor-operations").MethodEnabledResult>;
|
|
23
24
|
disableTwoFactor(body: unknown, userModel: UserModel): Promise<import("./two-factor-operations").SuccessResult>;
|
|
24
25
|
regenerateBackupCodes(body: unknown, userModel: UserModel): Promise<import("./two-factor-operations").BackupCodesResult>;
|
|
25
26
|
markBackupCodesSaved(userModel: UserModel): Promise<import("./two-factor-operations").TwoFactorStatus>;
|
|
@@ -38,7 +38,7 @@ let SecuritySettingsController = class SecuritySettingsController extends (0, pa
|
|
|
38
38
|
icon: "i-ph-gauge",
|
|
39
39
|
})
|
|
40
40
|
.navBadge({
|
|
41
|
-
count: (_ctx, user) => Promise.resolve((0, security_attention_1.
|
|
41
|
+
count: (_ctx, user) => Promise.resolve((0, security_attention_1.securityAttentionBadge)((0, two_factor_operations_1.getTwoFactorStatus)(user))),
|
|
42
42
|
});
|
|
43
43
|
static passwordComponent = (0, custom_1.CustomComponent)("DmsSecurityPassword").meta({
|
|
44
44
|
name: "$page.settings.security.password_title",
|
|
@@ -86,7 +86,10 @@ let SecuritySettingsController = class SecuritySettingsController extends (0, pa
|
|
|
86
86
|
return (0, two_factor_operations_1.confirmTotpSetup)(this.user, body, userModel);
|
|
87
87
|
}
|
|
88
88
|
enableEmail(body, userModel) {
|
|
89
|
-
return (0, two_factor_operations_1.
|
|
89
|
+
return (0, two_factor_operations_1.startEmailSetup)(this.user, body, userModel);
|
|
90
|
+
}
|
|
91
|
+
confirmEmail(body, userModel) {
|
|
92
|
+
return (0, two_factor_operations_1.confirmEmailSetup)(this.user, body, userModel);
|
|
90
93
|
}
|
|
91
94
|
disableTwoFactor(body, userModel) {
|
|
92
95
|
return (0, two_factor_operations_1.disableTwoFactorMethod)(this.user, body, userModel);
|
|
@@ -189,6 +192,14 @@ __decorate([
|
|
|
189
192
|
__metadata("design:paramtypes", [Object, db_1.UserModel]),
|
|
190
193
|
__metadata("design:returntype", void 0)
|
|
191
194
|
], SecuritySettingsController.prototype, "enableEmail", null);
|
|
195
|
+
__decorate([
|
|
196
|
+
(0, interface_api_1.Post)("/two-factor/confirm-email"),
|
|
197
|
+
__param(0, (0, interface_api_1.JSONBody)()),
|
|
198
|
+
__param(1, (0, interface_database_decorators_1.Model)(db_1.UserModel)),
|
|
199
|
+
__metadata("design:type", Function),
|
|
200
|
+
__metadata("design:paramtypes", [Object, db_1.UserModel]),
|
|
201
|
+
__metadata("design:returntype", void 0)
|
|
202
|
+
], SecuritySettingsController.prototype, "confirmEmail", null);
|
|
192
203
|
__decorate([
|
|
193
204
|
(0, interface_api_1.Post)("/two-factor/disable"),
|
|
194
205
|
__param(0, (0, interface_api_1.JSONBody)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/security.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAMmC;AACnC,6FAAkE;AAClE,yDAA8D;AAC9D,0DAI2C;AAC3C,kEAAwE;AACxE,6DAA0E;AAC1E,yDAA8E;AAC9E,+DAM+B;AAC/B,yCAA0C;AAC1C,iDAIwB;AACxB,
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,8 @@ export interface SuccessResult {
|
|
|
26
26
|
export declare function getTwoFactorStatus(user: User): TwoFactorStatus;
|
|
27
27
|
export declare function startTotpSetup(user: User, body: unknown, userModel: UserModel): Promise<TotpSetup>;
|
|
28
28
|
export declare function confirmTotpSetup(user: User, body: unknown, userModel: UserModel): Promise<MethodEnabledResult>;
|
|
29
|
-
export declare function
|
|
29
|
+
export declare function startEmailSetup(user: User, body: unknown, userModel: UserModel): Promise<SuccessResult>;
|
|
30
|
+
export declare function confirmEmailSetup(user: User, body: unknown, userModel: UserModel): Promise<MethodEnabledResult>;
|
|
30
31
|
export declare function disableTwoFactorMethod(user: User, body: unknown, userModel: UserModel): Promise<SuccessResult>;
|
|
31
32
|
export declare function regenerateBackupCodes(user: User, body: unknown, userModel: UserModel): Promise<BackupCodesResult>;
|
|
32
33
|
export declare function markBackupCodesSaved(user: User, userModel: UserModel): Promise<TwoFactorStatus>;
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.getTwoFactorStatus = getTwoFactorStatus;
|
|
7
4
|
exports.startTotpSetup = startTotpSetup;
|
|
8
5
|
exports.confirmTotpSetup = confirmTotpSetup;
|
|
9
|
-
exports.
|
|
6
|
+
exports.startEmailSetup = startEmailSetup;
|
|
7
|
+
exports.confirmEmailSetup = confirmEmailSetup;
|
|
10
8
|
exports.disableTwoFactorMethod = disableTwoFactorMethod;
|
|
11
9
|
exports.regenerateBackupCodes = regenerateBackupCodes;
|
|
12
10
|
exports.markBackupCodesSaved = markBackupCodesSaved;
|
|
13
11
|
exports.requestTwoFactorEmailCode = requestTwoFactorEmailCode;
|
|
14
12
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
15
|
-
const auth_1 = require("@antelopejs/interface-dms/auth");
|
|
16
13
|
const _2fa_1 = require("2fa");
|
|
17
|
-
const randomstring_1 = __importDefault(require("randomstring"));
|
|
18
|
-
const constants_1 = require("../../../routes/auth/constants");
|
|
19
14
|
const account_notifications_1 = require("../../../utils/account-notifications");
|
|
15
|
+
const two_factor_codes_1 = require("../../../utils/two-factor-codes");
|
|
20
16
|
const auth_schema_1 = require("../../../validation/auth.schema");
|
|
21
17
|
const security_schema_1 = require("../../../validation/security.schema");
|
|
22
18
|
const current_password_1 = require("./current-password");
|
|
@@ -24,8 +20,6 @@ const profile_helpers_1 = require("./profile-helpers");
|
|
|
24
20
|
const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
|
|
25
21
|
const HTTP_BAD_REQUEST = 400;
|
|
26
22
|
const HTTP_UNAUTHORIZED = 401;
|
|
27
|
-
const HTTP_TOO_MANY_REQUESTS = 429;
|
|
28
|
-
const EMAIL_CODE_LENGTH = 6;
|
|
29
23
|
const QR_MODULE_SIZE = 6;
|
|
30
24
|
const QR_MARGIN = 3;
|
|
31
25
|
const OTP_AUTH_SECRET_PARAM = "secret";
|
|
@@ -82,7 +76,7 @@ function enableMethod(user, method) {
|
|
|
82
76
|
async function confirmTotpSetup(user, body, userModel) {
|
|
83
77
|
const { code } = (0, interface_api_util_1.assertValidation)(body, (value) => auth_schema_1.authSchema.confirmTotp.parse(value));
|
|
84
78
|
(0, interface_api_util_1.assert)(user.twoFactorPendingSecret, HTTP_BAD_REQUEST, "error.totp_not_setup");
|
|
85
|
-
(0, interface_api_util_1.assert)((0,
|
|
79
|
+
(0, interface_api_util_1.assert)(await (0, two_factor_codes_1.acceptTotpCode)(userModel, user, user.twoFactorPendingSecret, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
86
80
|
user.twoFactorSecret = user.twoFactorPendingSecret;
|
|
87
81
|
user.twoFactorPendingSecret = null;
|
|
88
82
|
const backupCodes = enableMethod(user, "totp");
|
|
@@ -90,8 +84,21 @@ async function confirmTotpSetup(user, body, userModel) {
|
|
|
90
84
|
(0, fire_and_forget_1.fireAndForget)((0, account_notifications_1.notifyTwoFactorEnabled)(user._id, "totp"), "two-factor enabled notification");
|
|
91
85
|
return { success: true, backupCodes };
|
|
92
86
|
}
|
|
93
|
-
|
|
87
|
+
const isEmailSetupPending = (user) => !methodsOf(user).includes("email") && !!user.twoFactorEmailCode;
|
|
88
|
+
async function startEmailSetup(user, body, userModel) {
|
|
89
|
+
const needsCode = !isEmailSetupPending(user) || (0, two_factor_codes_1.isEmailCodeExpired)(user);
|
|
90
|
+
if (needsCode)
|
|
91
|
+
(0, two_factor_codes_1.assertEmailCodeNotRateLimited)(user);
|
|
94
92
|
await assertMayAddMethod(user, body, userModel);
|
|
93
|
+
if (needsCode)
|
|
94
|
+
await (0, two_factor_codes_1.sendNewEmailCode)(userModel, user);
|
|
95
|
+
return { success: true };
|
|
96
|
+
}
|
|
97
|
+
async function confirmEmailSetup(user, body, userModel) {
|
|
98
|
+
const { code } = (0, interface_api_util_1.assertValidation)(body, (value) => auth_schema_1.authSchema.confirmEmailMethod.parse(value));
|
|
99
|
+
(0, interface_api_util_1.assert)(user.twoFactorEmailCode && !(0, two_factor_codes_1.isEmailCodeExpired)(user), HTTP_BAD_REQUEST, "error.2fa_code_expired");
|
|
100
|
+
(0, interface_api_util_1.assert)((0, two_factor_codes_1.emailCodeMatches)(user, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
101
|
+
(0, two_factor_codes_1.consumeEmailCode)(user);
|
|
95
102
|
const backupCodes = enableMethod(user, "email");
|
|
96
103
|
await userModel.update(user);
|
|
97
104
|
(0, fire_and_forget_1.fireAndForget)((0, account_notifications_1.notifyTwoFactorEnabled)(user._id, "email"), "two-factor enabled notification");
|
|
@@ -106,7 +113,7 @@ function clearTwoFactorLeftovers(user) {
|
|
|
106
113
|
}
|
|
107
114
|
async function disableTwoFactorMethod(user, body, userModel) {
|
|
108
115
|
const { method, code } = (0, interface_api_util_1.assertValidation)(body, (value) => auth_schema_1.authSchema.disableTwoFactor.parse(value));
|
|
109
|
-
(0, interface_api_util_1.assert)((0,
|
|
116
|
+
(0, interface_api_util_1.assert)(await (0, two_factor_codes_1.verifyTwoFactorCode)(userModel, user, method, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
110
117
|
const methods = methodsOf(user).filter((entry) => entry !== method);
|
|
111
118
|
user.twoFactorMethods = methods;
|
|
112
119
|
if (method === "totp")
|
|
@@ -117,14 +124,17 @@ async function disableTwoFactorMethod(user, body, userModel) {
|
|
|
117
124
|
(0, fire_and_forget_1.fireAndForget)((0, account_notifications_1.notifyTwoFactorDisabled)(user._id, method), "two-factor disabled notification");
|
|
118
125
|
return { success: true };
|
|
119
126
|
}
|
|
120
|
-
function isValidCodeForAnyMethod(user, code) {
|
|
121
|
-
const
|
|
122
|
-
|
|
127
|
+
async function isValidCodeForAnyMethod(userModel, user, code) {
|
|
128
|
+
for (const method of methodsOf(user)) {
|
|
129
|
+
if (await (0, two_factor_codes_1.verifyTwoFactorCode)(userModel, user, method, code))
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
123
133
|
}
|
|
124
134
|
async function regenerateBackupCodes(user, body, userModel) {
|
|
125
135
|
const { code } = (0, interface_api_util_1.assertValidation)(body, (value) => auth_schema_1.authSchema.regenerateBackup.parse(value));
|
|
126
136
|
(0, interface_api_util_1.assert)(methodsOf(user).length > 0, HTTP_BAD_REQUEST, "error.2fa_not_enabled");
|
|
127
|
-
(0, interface_api_util_1.assert)(isValidCodeForAnyMethod(user, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
137
|
+
(0, interface_api_util_1.assert)(await isValidCodeForAnyMethod(userModel, user, code), HTTP_UNAUTHORIZED, "error.invalid_2fa_code");
|
|
128
138
|
const previousCount = user.twoFactorBackupCodes?.length ?? 0;
|
|
129
139
|
const backupCodes = issueBackupCodes(user);
|
|
130
140
|
await userModel.update(user);
|
|
@@ -138,19 +148,8 @@ async function markBackupCodesSaved(user, userModel) {
|
|
|
138
148
|
return getTwoFactorStatus(user);
|
|
139
149
|
}
|
|
140
150
|
async function requestTwoFactorEmailCode(user, userModel) {
|
|
141
|
-
(0, interface_api_util_1.assert)(methodsOf(user).includes("email"), HTTP_BAD_REQUEST, "error.2fa_email_not_enabled");
|
|
142
|
-
|
|
143
|
-
Date.now() - new Date(user.twoFactorEmailCodeRequestedAt).getTime() <
|
|
144
|
-
constants_1.TWO_FACTOR_RATE_LIMIT_MS;
|
|
145
|
-
(0, interface_api_util_1.assert)(!isRateLimited, HTTP_TOO_MANY_REQUESTS, "error.rate_limited");
|
|
146
|
-
const code = randomstring_1.default.generate({
|
|
147
|
-
length: EMAIL_CODE_LENGTH,
|
|
148
|
-
charset: "numeric",
|
|
149
|
-
});
|
|
150
|
-
user.twoFactorEmailCode = code;
|
|
151
|
-
user.twoFactorEmailCodeRequestedAt = new Date();
|
|
152
|
-
await userModel.update(user);
|
|
153
|
-
await (0, auth_1.send2FAEmail)(user, code);
|
|
151
|
+
(0, interface_api_util_1.assert)(methodsOf(user).includes("email") || isEmailSetupPending(user), HTTP_BAD_REQUEST, "error.2fa_email_not_enabled");
|
|
152
|
+
await (0, two_factor_codes_1.sendNewEmailCode)(userModel, user);
|
|
154
153
|
return { success: true };
|
|
155
154
|
}
|
|
156
155
|
//# sourceMappingURL=two-factor-operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two-factor-operations.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/two-factor-operations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"two-factor-operations.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/two-factor-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.forgotPassword = forgotPassword;
|
|
7
7
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
8
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
8
9
|
const auth_1 = require("@antelopejs/interface-dms/auth");
|
|
9
10
|
const randomstring_1 = __importDefault(require("randomstring"));
|
|
10
11
|
const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
|
|
12
|
+
const signInAttempts_model_1 = require("../../db/models/signInAttempts.model");
|
|
11
13
|
const auth_schema_1 = require("../../validation/auth.schema");
|
|
12
14
|
const RATE_LIMIT_MS = 60 * 1000;
|
|
13
15
|
async function forgotPassword(userModel, body) {
|
|
@@ -28,6 +30,7 @@ async function forgotPassword(userModel, body) {
|
|
|
28
30
|
});
|
|
29
31
|
user.forgotPasswordRequestedAt = new Date();
|
|
30
32
|
await userModel.update(user);
|
|
33
|
+
await (0, interface_database_decorators_1.GetModel)(signInAttempts_model_1.SignInAttemptsModel).clearResetCodeAttempts(user._id);
|
|
31
34
|
(0, fire_and_forget_1.fireAndForget)((0, auth_1.sendEmailForgotEmail)(user), `password reset email to "${user.email}"`);
|
|
32
35
|
}
|
|
33
36
|
//# sourceMappingURL=forgot-password.js.map
|
|
@@ -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":";;;;;AAWA,wCAgCC;AA3CD,uEAAkE;AAClE,6FAAqE;AACrE,yDAAsE;AAEtE,gEAAwC;AACxC,qFAAgF;AAChF,+EAA2E;AAC3E,8DAA0D;AAE1D,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzB,KAAK,UAAU,cAAc,CAClC,SAAoB,EACpB,IAAa;IAEb,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,qCAAgB,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,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,0CAAmB,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"}
|
|
@@ -30,6 +30,7 @@ __exportStar(require("./signup"), exports);
|
|
|
30
30
|
__exportStar(require("./switch-tenant"), exports);
|
|
31
31
|
__exportStar(require("./types"), exports);
|
|
32
32
|
__exportStar(require("./validate-forgot-password-token"), exports);
|
|
33
|
+
__exportStar(require("./validate-invite-token"), exports);
|
|
33
34
|
__exportStar(require("./verify-2fa"), exports);
|
|
34
35
|
__exportStar(require("./verify-email"), exports);
|
|
35
36
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC;AAClC,0CAAwB;AACxB,2CAAyB;AACzB,uCAAqB;AACrB,0CAAwB;AACxB,4CAA0B;AAC1B,sDAAoC;AACpC,+DAA6C;AAC7C,mDAAiC;AACjC,oDAAkC;AAClC,qDAAmC;AACnC,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,mEAAiD;AACjD,+CAA6B;AAC7B,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC;AAClC,0CAAwB;AACxB,2CAAyB;AACzB,uCAAqB;AACrB,0CAAwB;AACxB,4CAA0B;AAC1B,sDAAoC;AACpC,+DAA6C;AAC7C,mDAAiC;AACjC,oDAAkC;AAClC,qDAAmC;AACnC,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,mEAAiD;AACjD,0DAAwC;AACxC,+CAA6B;AAC7B,iDAA+B"}
|
|
@@ -2,19 +2,43 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveValidInvite = resolveValidInvite;
|
|
4
4
|
exports.consumeInvite = consumeInvite;
|
|
5
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
5
6
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
6
7
|
const interface_database_1 = require("@antelopejs/interface-database");
|
|
7
8
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
8
9
|
const db_1 = require("@antelopejs/interface-dms/db");
|
|
10
|
+
const inviteResolutions_model_1 = require("@antelopejs/interface-dms/db/internal/inviteResolutions.model");
|
|
9
11
|
const invite_resolution_1 = require("@antelopejs/interface-dms/invite-resolution");
|
|
10
12
|
const HTTP_BAD_REQUEST = 400;
|
|
11
13
|
const INVALID_TOKEN_MESSAGE = "error.invalid_token";
|
|
12
14
|
const INVITE_EXPIRED_MESSAGE = "error.invite_expired";
|
|
13
|
-
|
|
15
|
+
const RETIRED_INVITE_MESSAGES = {
|
|
16
|
+
accepted: "error.invite_used",
|
|
17
|
+
cancelled: "error.invite_revoked",
|
|
18
|
+
replaced: "error.invite_replaced",
|
|
19
|
+
resent: "error.invite_replaced",
|
|
20
|
+
expired: INVITE_EXPIRED_MESSAGE,
|
|
21
|
+
};
|
|
22
|
+
function isInviteFor(invite, email) {
|
|
23
|
+
return invite.email.toLowerCase() === email.toLowerCase();
|
|
24
|
+
}
|
|
25
|
+
async function retiredInviteMessage(token, email) {
|
|
26
|
+
const resolution = await (0, interface_database_decorators_1.GetModel)(inviteResolutions_model_1.InviteResolutionsModel, interface_database_1.CROSS_INSTANCE).getForToken(token);
|
|
27
|
+
if (!resolution || !isInviteFor(resolution.invite, email)) {
|
|
28
|
+
return INVALID_TOKEN_MESSAGE;
|
|
29
|
+
}
|
|
30
|
+
return RETIRED_INVITE_MESSAGES[resolution.reason] ?? INVALID_TOKEN_MESSAGE;
|
|
31
|
+
}
|
|
32
|
+
async function loadLiveInvite(token, email) {
|
|
14
33
|
const inviteWithTenant = await (0, interface_database_decorators_1.GetModel)(db_1.UserInviteModel, interface_database_1.CROSS_INSTANCE).getByTokenWithTenant(token);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
34
|
+
if (!inviteWithTenant) {
|
|
35
|
+
throw new interface_api_1.HTTPResult(HTTP_BAD_REQUEST, await retiredInviteMessage(token, email));
|
|
36
|
+
}
|
|
37
|
+
(0, interface_api_util_1.assert)(isInviteFor(inviteWithTenant.invite, email), HTTP_BAD_REQUEST, INVALID_TOKEN_MESSAGE);
|
|
38
|
+
return inviteWithTenant;
|
|
39
|
+
}
|
|
40
|
+
async function resolveValidInvite(token, email) {
|
|
41
|
+
const { invite, tenantId } = await loadLiveInvite(token, email);
|
|
18
42
|
(0, interface_api_util_1.assert)(new Date(invite.expiresAt) > new Date(), HTTP_BAD_REQUEST, INVITE_EXPIRED_MESSAGE);
|
|
19
43
|
await (0, invite_resolution_1.assertInviteReady)(tenantId, invite);
|
|
20
44
|
return { invite, tenantId };
|