@portaidentity/server 1.7.3 → 1.9.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 +28 -0
- package/dist/applications/index.d.ts +2 -2
- package/dist/applications/index.d.ts.map +1 -1
- package/dist/applications/index.js +2 -2
- package/dist/applications/index.js.map +1 -1
- package/dist/applications/repository.d.ts +49 -4
- package/dist/applications/repository.d.ts.map +1 -1
- package/dist/applications/repository.js +148 -10
- package/dist/applications/repository.js.map +1 -1
- package/dist/applications/service.d.ts +35 -17
- package/dist/applications/service.d.ts.map +1 -1
- package/dist/applications/service.js +144 -35
- package/dist/applications/service.js.map +1 -1
- package/dist/applications/types.d.ts +1 -1
- package/dist/applications/types.d.ts.map +1 -1
- package/dist/applications/validators.d.ts +14 -0
- package/dist/applications/validators.d.ts.map +1 -0
- package/dist/applications/validators.js +14 -0
- package/dist/applications/validators.js.map +1 -0
- package/dist/auth/effective-branding.d.ts +35 -0
- package/dist/auth/effective-branding.d.ts.map +1 -0
- package/dist/auth/effective-branding.js +81 -0
- package/dist/auth/effective-branding.js.map +1 -0
- package/dist/auth/email-service.d.ts +3 -8
- package/dist/auth/email-service.d.ts.map +1 -1
- package/dist/auth/email-service.js +22 -30
- package/dist/auth/email-service.js.map +1 -1
- package/dist/auth/i18n.d.ts +5 -0
- package/dist/auth/i18n.d.ts.map +1 -1
- package/dist/auth/i18n.js +6 -5
- package/dist/auth/i18n.js.map +1 -1
- package/dist/auth/rate-limiter.d.ts +6 -10
- package/dist/auth/rate-limiter.d.ts.map +1 -1
- package/dist/auth/rate-limiter.js +12 -16
- package/dist/auth/rate-limiter.js.map +1 -1
- package/dist/auth/recovery-job-processor.d.ts.map +1 -1
- package/dist/auth/recovery-job-processor.js +1 -1
- package/dist/auth/recovery-job-processor.js.map +1 -1
- package/dist/auth/template-engine.d.ts +3 -1
- package/dist/auth/template-engine.d.ts.map +1 -1
- package/dist/auth/template-engine.js +1 -1
- package/dist/auth/template-engine.js.map +1 -1
- package/dist/auth/token-repository.d.ts +9 -3
- package/dist/auth/token-repository.d.ts.map +1 -1
- package/dist/auth/token-repository.js +17 -8
- package/dist/auth/token-repository.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +12 -12
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/error-handler.d.ts +3 -2
- package/dist/cli/error-handler.d.ts.map +1 -1
- package/dist/cli/error-handler.js +9 -2
- package/dist/cli/error-handler.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/index.d.ts +1 -1
- package/dist/clients/index.js +1 -1
- package/dist/clients/repository.d.ts +24 -0
- package/dist/clients/repository.d.ts.map +1 -1
- package/dist/clients/repository.js +39 -0
- package/dist/clients/repository.js.map +1 -1
- package/dist/clients/secret-repository.d.ts +35 -8
- package/dist/clients/secret-repository.d.ts.map +1 -1
- package/dist/clients/secret-repository.js +69 -16
- package/dist/clients/secret-repository.js.map +1 -1
- package/dist/clients/secret-service.d.ts +5 -9
- package/dist/clients/secret-service.d.ts.map +1 -1
- package/dist/clients/secret-service.js +13 -22
- package/dist/clients/secret-service.js.map +1 -1
- package/dist/clients/service.d.ts +10 -13
- package/dist/clients/service.d.ts.map +1 -1
- package/dist/clients/service.js +121 -42
- package/dist/clients/service.js.map +1 -1
- package/dist/clients/types.d.ts +14 -1
- package/dist/clients/types.d.ts.map +1 -1
- package/dist/clients/types.js +1 -0
- package/dist/clients/types.js.map +1 -1
- package/dist/clients/validators.d.ts +83 -1
- package/dist/clients/validators.d.ts.map +1 -1
- package/dist/clients/validators.js +110 -0
- package/dist/clients/validators.js.map +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +23 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/custom-claims/repository.d.ts +14 -9
- package/dist/custom-claims/repository.d.ts.map +1 -1
- package/dist/custom-claims/repository.js +38 -11
- package/dist/custom-claims/repository.js.map +1 -1
- package/dist/custom-claims/service.d.ts +11 -6
- package/dist/custom-claims/service.d.ts.map +1 -1
- package/dist/custom-claims/service.js +43 -20
- package/dist/custom-claims/service.js.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/admin-permissions.d.ts +12 -7
- package/dist/lib/admin-permissions.d.ts.map +1 -1
- package/dist/lib/admin-permissions.js +26 -16
- package/dist/lib/admin-permissions.js.map +1 -1
- package/dist/lib/audit-log.d.ts +2 -2
- package/dist/lib/audit-log.d.ts.map +1 -1
- package/dist/lib/audit-log.js +1 -1
- package/dist/lib/audit-log.js.map +1 -1
- package/dist/lib/authority-revocation.d.ts +18 -0
- package/dist/lib/authority-revocation.d.ts.map +1 -0
- package/dist/lib/authority-revocation.js +37 -0
- package/dist/lib/authority-revocation.js.map +1 -0
- package/dist/lib/branding-assets.d.ts +35 -5
- package/dist/lib/branding-assets.d.ts.map +1 -1
- package/dist/lib/branding-assets.js +33 -26
- package/dist/lib/branding-assets.js.map +1 -1
- package/dist/lib/bulk-operations.d.ts +1 -1
- package/dist/lib/bulk-operations.d.ts.map +1 -1
- package/dist/lib/bulk-operations.js +1 -13
- package/dist/lib/bulk-operations.js.map +1 -1
- package/dist/lib/cursor.d.ts +2 -0
- package/dist/lib/cursor.d.ts.map +1 -1
- package/dist/lib/cursor.js +2 -7
- package/dist/lib/cursor.js.map +1 -1
- package/dist/lib/database.d.ts.map +1 -1
- package/dist/lib/database.js +5 -0
- package/dist/lib/database.js.map +1 -1
- package/dist/lib/deletion-cleanup.d.ts +43 -0
- package/dist/lib/deletion-cleanup.d.ts.map +1 -0
- package/dist/lib/deletion-cleanup.js +207 -0
- package/dist/lib/deletion-cleanup.js.map +1 -0
- package/dist/lib/image-validator.d.ts +3 -1
- package/dist/lib/image-validator.d.ts.map +1 -1
- package/dist/lib/image-validator.js +32 -19
- package/dist/lib/image-validator.js.map +1 -1
- package/dist/lib/log-format.d.ts +20 -0
- package/dist/lib/log-format.d.ts.map +1 -0
- package/dist/lib/log-format.js +22 -0
- package/dist/lib/log-format.js.map +1 -0
- package/dist/lib/logger.d.ts +3 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +21 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/redis.d.ts.map +1 -1
- package/dist/lib/redis.js +3 -0
- package/dist/lib/redis.js.map +1 -1
- package/dist/lib/session-tracking.d.ts +73 -11
- package/dist/lib/session-tracking.d.ts.map +1 -1
- package/dist/lib/session-tracking.js +76 -32
- package/dist/lib/session-tracking.js.map +1 -1
- package/dist/lib/signing-key-crypto.d.ts.map +1 -1
- package/dist/lib/signing-key-crypto.js +4 -5
- package/dist/lib/signing-key-crypto.js.map +1 -1
- package/dist/lib/signing-keys.d.ts +3 -4
- package/dist/lib/signing-keys.d.ts.map +1 -1
- package/dist/lib/signing-keys.js +66 -41
- package/dist/lib/signing-keys.js.map +1 -1
- package/dist/lib/super-admin-protection.d.ts +5 -5
- package/dist/lib/super-admin-protection.d.ts.map +1 -1
- package/dist/lib/super-admin-protection.js +6 -9
- package/dist/lib/super-admin-protection.js.map +1 -1
- package/dist/lib/system-config-catalog.d.ts +268 -0
- package/dist/lib/system-config-catalog.d.ts.map +1 -0
- package/dist/lib/system-config-catalog.js +90 -0
- package/dist/lib/system-config-catalog.js.map +1 -0
- package/dist/lib/system-config.d.ts +30 -33
- package/dist/lib/system-config.d.ts.map +1 -1
- package/dist/lib/system-config.js +78 -93
- package/dist/lib/system-config.js.map +1 -1
- package/dist/lib/with-timeout.d.ts +32 -0
- package/dist/lib/with-timeout.d.ts.map +1 -0
- package/dist/lib/with-timeout.js +45 -0
- package/dist/lib/with-timeout.js.map +1 -0
- package/dist/middleware/admin-auth.d.ts +6 -5
- package/dist/middleware/admin-auth.d.ts.map +1 -1
- package/dist/middleware/admin-auth.js +30 -20
- package/dist/middleware/admin-auth.js.map +1 -1
- package/dist/middleware/admin-cors.d.ts +3 -3
- package/dist/middleware/admin-cors.js +3 -3
- package/dist/middleware/admin-mutation-audit.d.ts +3 -2
- package/dist/middleware/admin-mutation-audit.d.ts.map +1 -1
- package/dist/middleware/admin-mutation-audit.js +12 -5
- package/dist/middleware/admin-mutation-audit.js.map +1 -1
- package/dist/middleware/admin-rate-limiter.d.ts +7 -8
- package/dist/middleware/admin-rate-limiter.d.ts.map +1 -1
- package/dist/middleware/admin-rate-limiter.js +7 -8
- package/dist/middleware/admin-rate-limiter.js.map +1 -1
- package/dist/middleware/client-secret-hash.d.ts +10 -29
- package/dist/middleware/client-secret-hash.d.ts.map +1 -1
- package/dist/middleware/client-secret-hash.js +161 -59
- package/dist/middleware/client-secret-hash.js.map +1 -1
- package/dist/middleware/health.d.ts +17 -0
- package/dist/middleware/health.d.ts.map +1 -1
- package/dist/middleware/health.js +25 -21
- package/dist/middleware/health.js.map +1 -1
- package/dist/middleware/ready.d.ts.map +1 -1
- package/dist/middleware/ready.js +1 -12
- package/dist/middleware/ready.js.map +1 -1
- package/dist/middleware/require-existing-organization.d.ts +18 -0
- package/dist/middleware/require-existing-organization.d.ts.map +1 -0
- package/dist/middleware/require-existing-organization.js +38 -0
- package/dist/middleware/require-existing-organization.js.map +1 -0
- package/dist/middleware/require-permission.d.ts.map +1 -1
- package/dist/middleware/require-permission.js +35 -1
- package/dist/middleware/require-permission.js.map +1 -1
- package/dist/middleware/require-user-organization.d.ts.map +1 -1
- package/dist/middleware/require-user-organization.js +4 -2
- package/dist/middleware/require-user-organization.js.map +1 -1
- package/dist/middleware/security-headers.d.ts +18 -0
- package/dist/middleware/security-headers.d.ts.map +1 -1
- package/dist/middleware/security-headers.js +32 -1
- package/dist/middleware/security-headers.js.map +1 -1
- package/dist/middleware/tenant-resolver.d.ts +1 -2
- package/dist/middleware/tenant-resolver.d.ts.map +1 -1
- package/dist/middleware/tenant-resolver.js +1 -5
- package/dist/middleware/tenant-resolver.js.map +1 -1
- package/dist/middleware/token-rate-limiter.d.ts +37 -16
- package/dist/middleware/token-rate-limiter.d.ts.map +1 -1
- package/dist/middleware/token-rate-limiter.js +126 -54
- package/dist/middleware/token-rate-limiter.js.map +1 -1
- package/dist/oidc/account-finder.d.ts +5 -5
- package/dist/oidc/account-finder.d.ts.map +1 -1
- package/dist/oidc/account-finder.js +31 -23
- package/dist/oidc/account-finder.js.map +1 -1
- package/dist/oidc/adapter-factory.d.ts.map +1 -1
- package/dist/oidc/adapter-factory.js +83 -3
- package/dist/oidc/adapter-factory.js.map +1 -1
- package/dist/oidc/configuration.d.ts +3 -8
- package/dist/oidc/configuration.d.ts.map +1 -1
- package/dist/oidc/configuration.js +67 -50
- package/dist/oidc/configuration.js.map +1 -1
- package/dist/oidc/provider.d.ts.map +1 -1
- package/dist/oidc/provider.js +7 -0
- package/dist/oidc/provider.js.map +1 -1
- package/dist/oidc/redis-adapter.d.ts +2 -3
- package/dist/oidc/redis-adapter.d.ts.map +1 -1
- package/dist/oidc/redis-adapter.js +54 -46
- package/dist/oidc/redis-adapter.js.map +1 -1
- package/dist/organizations/branding-url.d.ts +17 -0
- package/dist/organizations/branding-url.d.ts.map +1 -0
- package/dist/organizations/branding-url.js +38 -0
- package/dist/organizations/branding-url.js.map +1 -0
- package/dist/organizations/index.d.ts +2 -2
- package/dist/organizations/index.d.ts.map +1 -1
- package/dist/organizations/index.js +1 -1
- package/dist/organizations/index.js.map +1 -1
- package/dist/organizations/repository.d.ts +22 -32
- package/dist/organizations/repository.d.ts.map +1 -1
- package/dist/organizations/repository.js +64 -45
- package/dist/organizations/repository.js.map +1 -1
- package/dist/organizations/service.d.ts +14 -46
- package/dist/organizations/service.d.ts.map +1 -1
- package/dist/organizations/service.js +60 -112
- package/dist/organizations/service.js.map +1 -1
- package/dist/organizations/types.d.ts +1 -15
- package/dist/organizations/types.d.ts.map +1 -1
- package/dist/organizations/validators.d.ts +41 -0
- package/dist/organizations/validators.d.ts.map +1 -0
- package/dist/organizations/validators.js +48 -0
- package/dist/organizations/validators.js.map +1 -0
- package/dist/portability/apply.d.ts +15 -0
- package/dist/portability/apply.d.ts.map +1 -0
- package/dist/portability/apply.js +274 -0
- package/dist/portability/apply.js.map +1 -0
- package/dist/portability/authorization.d.ts +30 -0
- package/dist/portability/authorization.d.ts.map +1 -0
- package/dist/portability/authorization.js +130 -0
- package/dist/portability/authorization.js.map +1 -0
- package/dist/portability/cleanup.d.ts +29 -0
- package/dist/portability/cleanup.d.ts.map +1 -0
- package/dist/portability/cleanup.js +167 -0
- package/dist/portability/cleanup.js.map +1 -0
- package/dist/portability/export.d.ts +18 -0
- package/dist/portability/export.d.ts.map +1 -0
- package/dist/portability/export.js +125 -0
- package/dist/portability/export.js.map +1 -0
- package/dist/portability/import-repository.d.ts +204 -0
- package/dist/portability/import-repository.d.ts.map +1 -0
- package/dist/portability/import-repository.js +348 -0
- package/dist/portability/import-repository.js.map +1 -0
- package/dist/portability/import-user-client-writers.d.ts +40 -0
- package/dist/portability/import-user-client-writers.d.ts.map +1 -0
- package/dist/portability/import-user-client-writers.js +171 -0
- package/dist/portability/import-user-client-writers.js.map +1 -0
- package/dist/portability/index.d.ts +8 -0
- package/dist/portability/index.d.ts.map +1 -0
- package/dist/portability/index.js +8 -0
- package/dist/portability/index.js.map +1 -0
- package/dist/portability/plan-support.d.ts +137 -0
- package/dist/portability/plan-support.d.ts.map +1 -0
- package/dist/portability/plan-support.js +337 -0
- package/dist/portability/plan-support.js.map +1 -0
- package/dist/portability/plan.d.ts +34 -0
- package/dist/portability/plan.d.ts.map +1 -0
- package/dist/portability/plan.js +450 -0
- package/dist/portability/plan.js.map +1 -0
- package/dist/portability/repository.d.ts +95 -0
- package/dist/portability/repository.d.ts.map +1 -0
- package/dist/portability/repository.js +390 -0
- package/dist/portability/repository.js.map +1 -0
- package/dist/portability/schema.d.ts +591 -0
- package/dist/portability/schema.d.ts.map +1 -0
- package/dist/portability/schema.js +459 -0
- package/dist/portability/schema.js.map +1 -0
- package/dist/portability/types.d.ts +382 -0
- package/dist/portability/types.d.ts.map +1 -0
- package/dist/portability/types.js +19 -0
- package/dist/portability/types.js.map +1 -0
- package/dist/rbac/errors.d.ts +4 -0
- package/dist/rbac/errors.d.ts.map +1 -1
- package/dist/rbac/errors.js +7 -0
- package/dist/rbac/errors.js.map +1 -1
- package/dist/rbac/index.d.ts +3 -3
- package/dist/rbac/index.d.ts.map +1 -1
- package/dist/rbac/index.js +3 -3
- package/dist/rbac/index.js.map +1 -1
- package/dist/rbac/mapping-repository.d.ts +84 -9
- package/dist/rbac/mapping-repository.d.ts.map +1 -1
- package/dist/rbac/mapping-repository.js +222 -55
- package/dist/rbac/mapping-repository.js.map +1 -1
- package/dist/rbac/permission-repository.d.ts +36 -19
- package/dist/rbac/permission-repository.d.ts.map +1 -1
- package/dist/rbac/permission-repository.js +93 -35
- package/dist/rbac/permission-repository.js.map +1 -1
- package/dist/rbac/permission-service.d.ts +18 -19
- package/dist/rbac/permission-service.d.ts.map +1 -1
- package/dist/rbac/permission-service.js +100 -57
- package/dist/rbac/permission-service.js.map +1 -1
- package/dist/rbac/role-repository.d.ts +29 -24
- package/dist/rbac/role-repository.d.ts.map +1 -1
- package/dist/rbac/role-repository.js +66 -43
- package/dist/rbac/role-repository.js.map +1 -1
- package/dist/rbac/role-service.d.ts +35 -32
- package/dist/rbac/role-service.d.ts.map +1 -1
- package/dist/rbac/role-service.js +210 -96
- package/dist/rbac/role-service.js.map +1 -1
- package/dist/rbac/slugs.d.ts +16 -27
- package/dist/rbac/slugs.d.ts.map +1 -1
- package/dist/rbac/slugs.js +36 -59
- package/dist/rbac/slugs.js.map +1 -1
- package/dist/rbac/types.d.ts +2 -4
- package/dist/rbac/types.d.ts.map +1 -1
- package/dist/rbac/types.js.map +1 -1
- package/dist/rbac/user-role-service.d.ts +23 -24
- package/dist/rbac/user-role-service.d.ts.map +1 -1
- package/dist/rbac/user-role-service.js +117 -61
- package/dist/rbac/user-role-service.js.map +1 -1
- package/dist/routes/applications.d.ts +4 -2
- package/dist/routes/applications.d.ts.map +1 -1
- package/dist/routes/applications.js +57 -19
- package/dist/routes/applications.js.map +1 -1
- package/dist/routes/audit.js +1 -1
- package/dist/routes/audit.js.map +1 -1
- package/dist/routes/branding.d.ts +3 -3
- package/dist/routes/branding.d.ts.map +1 -1
- package/dist/routes/branding.js +44 -16
- package/dist/routes/branding.js.map +1 -1
- package/dist/routes/bulk.d.ts +0 -5
- package/dist/routes/bulk.d.ts.map +1 -1
- package/dist/routes/bulk.js +3 -5
- package/dist/routes/bulk.js.map +1 -1
- package/dist/routes/clients.d.ts +4 -4
- package/dist/routes/clients.d.ts.map +1 -1
- package/dist/routes/clients.js +113 -52
- package/dist/routes/clients.js.map +1 -1
- package/dist/routes/config.d.ts +17 -12
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/config.js +165 -64
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/custom-claims.d.ts.map +1 -1
- package/dist/routes/custom-claims.js +8 -2
- package/dist/routes/custom-claims.js.map +1 -1
- package/dist/routes/exports.d.ts +2 -1
- package/dist/routes/exports.d.ts.map +1 -1
- package/dist/routes/exports.js +57 -1
- package/dist/routes/exports.js.map +1 -1
- package/dist/routes/imports.d.ts +2 -2
- package/dist/routes/imports.d.ts.map +1 -1
- package/dist/routes/imports.js +95 -40
- package/dist/routes/imports.js.map +1 -1
- package/dist/routes/interactions.d.ts.map +1 -1
- package/dist/routes/interactions.js +113 -87
- package/dist/routes/interactions.js.map +1 -1
- package/dist/routes/invitation.d.ts.map +1 -1
- package/dist/routes/invitation.js +28 -27
- package/dist/routes/invitation.js.map +1 -1
- package/dist/routes/keys.d.ts.map +1 -1
- package/dist/routes/keys.js +26 -13
- package/dist/routes/keys.js.map +1 -1
- package/dist/routes/magic-link.d.ts.map +1 -1
- package/dist/routes/magic-link.js +5 -17
- package/dist/routes/magic-link.js.map +1 -1
- package/dist/routes/organizations.d.ts +1 -2
- package/dist/routes/organizations.d.ts.map +1 -1
- package/dist/routes/organizations.js +43 -104
- package/dist/routes/organizations.js.map +1 -1
- package/dist/routes/password-reset.d.ts.map +1 -1
- package/dist/routes/password-reset.js +13 -35
- package/dist/routes/password-reset.js.map +1 -1
- package/dist/routes/permissions.d.ts +1 -1
- package/dist/routes/permissions.d.ts.map +1 -1
- package/dist/routes/permissions.js +58 -17
- package/dist/routes/permissions.js.map +1 -1
- package/dist/routes/public-branding.d.ts +16 -0
- package/dist/routes/public-branding.d.ts.map +1 -0
- package/dist/routes/public-branding.js +52 -0
- package/dist/routes/public-branding.js.map +1 -0
- package/dist/routes/roles.d.ts +1 -1
- package/dist/routes/roles.d.ts.map +1 -1
- package/dist/routes/roles.js +63 -21
- package/dist/routes/roles.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +23 -12
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/two-factor.d.ts.map +1 -1
- package/dist/routes/two-factor.js +91 -38
- package/dist/routes/two-factor.js.map +1 -1
- package/dist/routes/user-roles.d.ts.map +1 -1
- package/dist/routes/user-roles.js +56 -9
- package/dist/routes/user-roles.js.map +1 -1
- package/dist/routes/users.d.ts +4 -8
- package/dist/routes/users.d.ts.map +1 -1
- package/dist/routes/users.js +108 -265
- package/dist/routes/users.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +53 -37
- package/dist/server.js.map +1 -1
- package/dist/two-factor/errors.d.ts +9 -0
- package/dist/two-factor/errors.d.ts.map +1 -1
- package/dist/two-factor/errors.js +12 -0
- package/dist/two-factor/errors.js.map +1 -1
- package/dist/two-factor/index.d.ts +5 -4
- package/dist/two-factor/index.d.ts.map +1 -1
- package/dist/two-factor/index.js +4 -4
- package/dist/two-factor/index.js.map +1 -1
- package/dist/two-factor/repository.d.ts +17 -6
- package/dist/two-factor/repository.d.ts.map +1 -1
- package/dist/two-factor/repository.js +37 -9
- package/dist/two-factor/repository.js.map +1 -1
- package/dist/two-factor/service.d.ts.map +1 -1
- package/dist/two-factor/service.js +26 -19
- package/dist/two-factor/service.js.map +1 -1
- package/dist/two-factor/totp.d.ts +13 -2
- package/dist/two-factor/totp.d.ts.map +1 -1
- package/dist/two-factor/totp.js +20 -7
- package/dist/two-factor/totp.js.map +1 -1
- package/dist/two-factor/types.d.ts +3 -0
- package/dist/two-factor/types.d.ts.map +1 -1
- package/dist/two-factor/types.js +5 -0
- package/dist/two-factor/types.js.map +1 -1
- package/dist/users/gdpr.d.ts +2 -40
- package/dist/users/gdpr.d.ts.map +1 -1
- package/dist/users/gdpr.js +3 -110
- package/dist/users/gdpr.js.map +1 -1
- package/dist/users/index.d.ts +5 -4
- package/dist/users/index.d.ts.map +1 -1
- package/dist/users/index.js +5 -4
- package/dist/users/index.js.map +1 -1
- package/dist/users/repository.d.ts +49 -3
- package/dist/users/repository.d.ts.map +1 -1
- package/dist/users/repository.js +169 -18
- package/dist/users/repository.js.map +1 -1
- package/dist/users/service.d.ts +19 -51
- package/dist/users/service.d.ts.map +1 -1
- package/dist/users/service.js +72 -122
- package/dist/users/service.js.map +1 -1
- package/dist/users/types.d.ts +4 -5
- package/dist/users/types.d.ts.map +1 -1
- package/dist/users/types.js.map +1 -1
- package/dist/users/validators.d.ts +28 -0
- package/dist/users/validators.d.ts.map +1 -0
- package/dist/users/validators.js +25 -0
- package/dist/users/validators.js.map +1 -0
- package/locales/default/en/errors.json +2 -1
- package/migrations/024_application_client_correction.sql +39 -0
- package/migrations/025_record_deletion_lifecycle.sql +26 -0
- package/migrations/026_simplify_user_lifecycle.sql +33 -0
- package/migrations/027_branding_asset_size_limits.sql +19 -0
- package/migrations/028_totp_replay_protection.sql +17 -0
- package/migrations/029_public_session_identifiers.sql +16 -0
- package/migrations/030_global_configuration_catalog.sql +39 -0
- package/migrations/031_monotonic_updated_at.sql +28 -0
- package/migrations/032_client_require_consent.sql +15 -0
- package/package.json +2 -2
- package/dist/lib/data-import-plan.d.ts +0 -50
- package/dist/lib/data-import-plan.d.ts.map +0 -1
- package/dist/lib/data-import-plan.js +0 -235
- package/dist/lib/data-import-plan.js.map +0 -1
- package/dist/lib/data-import.d.ts +0 -276
- package/dist/lib/data-import.d.ts.map +0 -1
- package/dist/lib/data-import.js +0 -1694
- package/dist/lib/data-import.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/two-factor/repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAU7C,OAAO,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/two-factor/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/two-factor/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/two-factor/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAiGpB;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0ChG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAgD/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAqBhF;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDrF;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC/F;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB9E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmCvF;AAMD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAiCjF;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BpE;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2B/E;AAMD;;;;GAIG;AACH,UAAU,YAAY;IACpB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAajF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,eAAe,GAAG,IAAI,CAmBxB;AAMD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwClF"}
|
|
@@ -18,15 +18,15 @@
|
|
|
18
18
|
* 5. Write audit log (fire-and-forget)
|
|
19
19
|
*/
|
|
20
20
|
import { config } from '../config/index.js';
|
|
21
|
-
import { getPool } from '../lib/database.js';
|
|
21
|
+
import { getPool, runDatabaseTransaction } from '../lib/database.js';
|
|
22
22
|
import { writeAuditLog } from '../lib/audit-log.js';
|
|
23
23
|
import { logger } from '../lib/logger.js';
|
|
24
24
|
import { TwoFactorAlreadyEnabledError, TwoFactorNotEnabledError, TotpNotConfiguredError, OtpExpiredError, OtpInvalidError, RecoveryCodeInvalidError, RecoveryCodesExhaustedError, } from './errors.js';
|
|
25
25
|
import { encryptTotpSecret, decryptTotpSecret } from './crypto.js';
|
|
26
26
|
import { generateOtpCode, hashOtpCode, verifyOtpCode } from './otp.js';
|
|
27
|
-
import { generateTotpSecret, generateTotpUri, generateQrCodeDataUri, verifyTotpCode } from './totp.js';
|
|
28
|
-
import { generateRecoveryCodes, hashRecoveryCode, verifyRecoveryCode as verifyRecoveryCodeHash } from './recovery.js';
|
|
29
|
-
import { insertTotp, findTotpByUserId,
|
|
27
|
+
import { generateTotpSecret, generateTotpUri, generateQrCodeDataUri, verifyTotpCode, } from './totp.js';
|
|
28
|
+
import { generateRecoveryCodes, hashRecoveryCode, verifyRecoveryCode as verifyRecoveryCodeHash, } from './recovery.js';
|
|
29
|
+
import { insertTotp, findTotpByUserId, consumeTotpTimeStep, verifyTotpEnrollment, deleteTotp, insertOtpCode, findActiveOtpCodes, markOtpCodeUsed, deleteExpiredOtpCodes, countActiveOtpCodes, findUnusedRecoveryCodes, markRecoveryCodeUsed, insertRecoveryCodes, deleteAllRecoveryCodes, countUnusedRecoveryCodes, } from './repository.js';
|
|
30
30
|
import { getCachedTwoFactorStatus, cacheTwoFactorStatus, invalidateTwoFactorCache, } from './cache.js';
|
|
31
31
|
import { findUserById, updateUser as repoUpdateUser } from '../users/repository.js';
|
|
32
32
|
// ---------------------------------------------------------------------------
|
|
@@ -219,17 +219,23 @@ export async function confirmTotpSetup(userId, code) {
|
|
|
219
219
|
const encryptionKey = getEncryptionKey();
|
|
220
220
|
const secret = decryptTotpSecret(totp.encryptedSecret, totp.encryptionIv, totp.encryptionTag, encryptionKey);
|
|
221
221
|
// Verify the TOTP code
|
|
222
|
-
const
|
|
223
|
-
|
|
222
|
+
const validationTime = Date.now();
|
|
223
|
+
const match = verifyTotpCode(code, secret, { algorithm: totp.algorithm, digits: totp.digits, period: totp.period }, validationTime);
|
|
224
|
+
if (match === null) {
|
|
224
225
|
return false;
|
|
225
226
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
227
|
+
const confirmed = await runDatabaseTransaction(async () => {
|
|
228
|
+
const enrollmentConsumed = await verifyTotpEnrollment(totp.id, userId, match.timeStep);
|
|
229
|
+
if (!enrollmentConsumed)
|
|
230
|
+
return false;
|
|
231
|
+
await repoUpdateUser(userId, {
|
|
232
|
+
twoFactorEnabled: true,
|
|
233
|
+
twoFactorMethod: 'totp',
|
|
234
|
+
});
|
|
235
|
+
return true;
|
|
232
236
|
});
|
|
237
|
+
if (!confirmed)
|
|
238
|
+
return false;
|
|
233
239
|
// Invalidate cache since 2FA state changed
|
|
234
240
|
await invalidateTwoFactorCache(userId);
|
|
235
241
|
// Audit log (fire-and-forget)
|
|
@@ -351,7 +357,11 @@ export async function verifyTotp(userId, code) {
|
|
|
351
357
|
const encryptionKey = getEncryptionKey();
|
|
352
358
|
const secret = decryptTotpSecret(totp.encryptedSecret, totp.encryptionIv, totp.encryptionTag, encryptionKey);
|
|
353
359
|
// Verify the code with ±1 step window
|
|
354
|
-
|
|
360
|
+
const validationTime = Date.now();
|
|
361
|
+
const match = verifyTotpCode(code, secret, { algorithm: totp.algorithm, digits: totp.digits, period: totp.period }, validationTime);
|
|
362
|
+
if (match === null)
|
|
363
|
+
return false;
|
|
364
|
+
return consumeTotpTimeStep(totp.id, userId, match.timeStep);
|
|
355
365
|
}
|
|
356
366
|
/**
|
|
357
367
|
* Verify a recovery code.
|
|
@@ -575,18 +585,15 @@ export async function getTwoFactorSummary(orgId) {
|
|
|
575
585
|
COUNT(*) FILTER (WHERE two_factor_method = 'totp')::text AS totp_count,
|
|
576
586
|
COUNT(*) FILTER (WHERE two_factor_method = 'email')::text AS email_count
|
|
577
587
|
FROM users
|
|
578
|
-
WHERE organization_id = $1
|
|
579
|
-
AND status != 'archived'`, [orgId]);
|
|
588
|
+
WHERE organization_id = $1`, [orgId]);
|
|
580
589
|
const row = result.rows[0];
|
|
581
590
|
const totalUsers = parseInt(row.total_users, 10);
|
|
582
591
|
const enabledCount = parseInt(row.enabled_count, 10);
|
|
583
592
|
const disabledCount = parseInt(row.disabled_count, 10);
|
|
584
593
|
const totpCount = parseInt(row.totp_count, 10);
|
|
585
594
|
const emailCount = parseInt(row.email_count, 10);
|
|
586
|
-
// Compliance rate: percentage of
|
|
587
|
-
const complianceRate = totalUsers > 0
|
|
588
|
-
? Math.round((enabledCount / totalUsers) * 10000) / 10000
|
|
589
|
-
: 0;
|
|
595
|
+
// Compliance rate: percentage of users with 2FA enabled.
|
|
596
|
+
const complianceRate = totalUsers > 0 ? Math.round((enabledCount / totalUsers) * 10000) / 10000 : 0;
|
|
590
597
|
return {
|
|
591
598
|
totalUsers,
|
|
592
599
|
enabledCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/two-factor/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/two-factor/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
* QR code generation uses the `qrcode` library to produce data URIs
|
|
10
10
|
* that can be displayed inline in Handlebars templates.
|
|
11
11
|
*/
|
|
12
|
+
/** Identifies the absolute TOTP time step matched during validation. */
|
|
13
|
+
export interface TotpMatch {
|
|
14
|
+
readonly timeStep: number;
|
|
15
|
+
}
|
|
12
16
|
/**
|
|
13
17
|
* Generate a new TOTP secret.
|
|
14
18
|
*
|
|
@@ -51,7 +55,14 @@ export declare function generateQrCodeDataUri(uri: string): Promise<string>;
|
|
|
51
55
|
*
|
|
52
56
|
* @param code - The 6-digit TOTP code entered by the user
|
|
53
57
|
* @param secret - Base32-encoded TOTP secret
|
|
54
|
-
* @
|
|
58
|
+
* @param parameters - Persisted algorithm, digit count, and time period
|
|
59
|
+
* @param validationTime - Exact Unix timestamp in milliseconds used for this attempt
|
|
60
|
+
* @returns The absolute matched time step, or null when the code does not match
|
|
61
|
+
* @throws UnsupportedTotpConfigurationError when persisted parameters are unsupported
|
|
55
62
|
*/
|
|
56
|
-
export declare function verifyTotpCode(code: string, secret: string
|
|
63
|
+
export declare function verifyTotpCode(code: string, secret: string, parameters: {
|
|
64
|
+
algorithm: string;
|
|
65
|
+
digits: number;
|
|
66
|
+
period: number;
|
|
67
|
+
}, validationTime: number): TotpMatch | null;
|
|
57
68
|
//# sourceMappingURL=totp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"totp.d.ts","sourceRoot":"","sources":["../../src/two-factor/totp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"totp.d.ts","sourceRoot":"","sources":["../../src/two-factor/totp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWzF;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACjE,cAAc,EAAE,MAAM,GACrB,SAAS,GAAG,IAAI,CAwBlB"}
|
package/dist/two-factor/totp.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { TOTP, Secret } from 'otpauth';
|
|
13
13
|
import QRCode from 'qrcode';
|
|
14
|
+
import { UnsupportedTotpConfigurationError } from './errors.js';
|
|
14
15
|
/** Default TOTP parameters matching the user_totp table defaults. */
|
|
15
16
|
const DEFAULT_ALGORITHM = 'SHA1';
|
|
16
17
|
const DEFAULT_DIGITS = 6;
|
|
@@ -79,18 +80,30 @@ export async function generateQrCodeDataUri(uri) {
|
|
|
79
80
|
*
|
|
80
81
|
* @param code - The 6-digit TOTP code entered by the user
|
|
81
82
|
* @param secret - Base32-encoded TOTP secret
|
|
82
|
-
* @
|
|
83
|
+
* @param parameters - Persisted algorithm, digit count, and time period
|
|
84
|
+
* @param validationTime - Exact Unix timestamp in milliseconds used for this attempt
|
|
85
|
+
* @returns The absolute matched time step, or null when the code does not match
|
|
86
|
+
* @throws UnsupportedTotpConfigurationError when persisted parameters are unsupported
|
|
83
87
|
*/
|
|
84
|
-
export function verifyTotpCode(code, secret) {
|
|
88
|
+
export function verifyTotpCode(code, secret, parameters, validationTime) {
|
|
89
|
+
if (parameters.algorithm !== DEFAULT_ALGORITHM ||
|
|
90
|
+
parameters.digits !== DEFAULT_DIGITS ||
|
|
91
|
+
parameters.period !== DEFAULT_PERIOD) {
|
|
92
|
+
throw new UnsupportedTotpConfigurationError();
|
|
93
|
+
}
|
|
85
94
|
const totp = new TOTP({
|
|
86
|
-
algorithm:
|
|
87
|
-
digits:
|
|
88
|
-
period:
|
|
95
|
+
algorithm: parameters.algorithm,
|
|
96
|
+
digits: parameters.digits,
|
|
97
|
+
period: parameters.period,
|
|
89
98
|
secret: Secret.fromBase32(secret),
|
|
90
99
|
});
|
|
91
100
|
// validate() returns the time step delta (0 for exact match, ±1 for adjacent)
|
|
92
101
|
// or null if invalid. A window of 1 allows ±1 step.
|
|
93
|
-
const delta = totp.validate({ token: code, window: 1 });
|
|
94
|
-
|
|
102
|
+
const delta = totp.validate({ token: code, timestamp: validationTime, window: 1 });
|
|
103
|
+
if (delta === null)
|
|
104
|
+
return null;
|
|
105
|
+
return {
|
|
106
|
+
timeStep: Math.floor(validationTime / (DEFAULT_PERIOD * 1_000)) + delta,
|
|
107
|
+
};
|
|
95
108
|
}
|
|
96
109
|
//# sourceMappingURL=totp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"totp.js","sourceRoot":"","sources":["../../src/two-factor/totp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,cAAc,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"totp.js","sourceRoot":"","sources":["../../src/two-factor/totp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEhE,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,cAAc,GAAG,EAAE,CAAC;AAO1B;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,+DAA+D;IAC/D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,MAAc;IAC/E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,MAAM;QACN,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;KAClC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,uDAAuD;IACvD,sEAAsE;IACtE,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;QAC3B,oBAAoB,EAAE,GAAG,EAAE,yCAAyC;QACpE,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,MAAc,EACd,UAAiE,EACjE,cAAsB;IAEtB,IACE,UAAU,CAAC,SAAS,KAAK,iBAAiB;QAC1C,UAAU,CAAC,MAAM,KAAK,cAAc;QACpC,UAAU,CAAC,MAAM,KAAK,cAAc,EACpC,CAAC;QACD,MAAM,IAAI,iCAAiC,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;KAClC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,oDAAoD;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACnF,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK;KACxE,CAAC;AACJ,CAAC"}
|
|
@@ -35,6 +35,8 @@ export interface UserTotp {
|
|
|
35
35
|
period: number;
|
|
36
36
|
/** True after the user has verified their first TOTP code. */
|
|
37
37
|
verified: boolean;
|
|
38
|
+
/** Absolute 30-second step of the most recently accepted code, or null before first use. */
|
|
39
|
+
lastAcceptedTimeStep: number | null;
|
|
38
40
|
createdAt: Date;
|
|
39
41
|
updatedAt: Date;
|
|
40
42
|
}
|
|
@@ -108,6 +110,7 @@ export interface UserTotpRow {
|
|
|
108
110
|
digits: number;
|
|
109
111
|
period: number;
|
|
110
112
|
verified: boolean;
|
|
113
|
+
last_accepted_time_step: string | null;
|
|
111
114
|
created_at: Date;
|
|
112
115
|
updated_at: Date;
|
|
113
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/two-factor/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/two-factor/types.ts"],"names":[],"mappings":"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"}
|
package/dist/two-factor/types.js
CHANGED
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
* @returns Mapped UserTotp object with camelCase properties
|
|
17
17
|
*/
|
|
18
18
|
export function mapRowToUserTotp(row) {
|
|
19
|
+
const lastAcceptedTimeStep = row.last_accepted_time_step === null ? null : Number(row.last_accepted_time_step);
|
|
20
|
+
if (lastAcceptedTimeStep !== null && !Number.isSafeInteger(lastAcceptedTimeStep)) {
|
|
21
|
+
throw new Error('TOTP replay time step is invalid');
|
|
22
|
+
}
|
|
19
23
|
return {
|
|
20
24
|
id: row.id,
|
|
21
25
|
userId: row.user_id,
|
|
@@ -26,6 +30,7 @@ export function mapRowToUserTotp(row) {
|
|
|
26
30
|
digits: row.digits,
|
|
27
31
|
period: row.period,
|
|
28
32
|
verified: row.verified,
|
|
33
|
+
lastAcceptedTimeStep,
|
|
29
34
|
createdAt: row.created_at,
|
|
30
35
|
updatedAt: row.updated_at,
|
|
31
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/two-factor/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/two-factor/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmKH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAgB;IAC/C,MAAM,oBAAoB,GACxB,GAAG,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACpF,IAAI,oBAAoB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACrC,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,oBAAoB;QACpB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAe;IAC7C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAoB;IACvD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
|
package/dist/users/gdpr.d.ts
CHANGED
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* User data export.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* capabilities for Porta's user data. These functions collect all user-related
|
|
6
|
-
* data across multiple tables for export, or anonymize/delete it for purge.
|
|
4
|
+
* Collects the user-related data exposed by Porta's portability endpoint.
|
|
7
5
|
*
|
|
8
6
|
* **Export** collects: user profile, role assignments, custom claim values,
|
|
9
7
|
* audit log entries (as actor or target), 2FA enrollment status (NOT secrets),
|
|
10
8
|
* and active OIDC sessions/grants.
|
|
11
9
|
*
|
|
12
|
-
* **Purge** anonymizes the user record and audit entries, deletes all
|
|
13
|
-
* related data (roles, claims, 2FA, OIDC sessions), and writes the compliance
|
|
14
|
-
* audit event in the same transaction before commit.
|
|
15
|
-
*
|
|
16
|
-
* Safety: Purging super-admin org users is blocked to prevent lock-out.
|
|
17
|
-
*
|
|
18
10
|
* @module users/gdpr
|
|
19
11
|
*/
|
|
20
12
|
import type { User } from './types.js';
|
|
@@ -65,16 +57,6 @@ export interface UserDataExport {
|
|
|
65
57
|
};
|
|
66
58
|
oidcSessions: number;
|
|
67
59
|
}
|
|
68
|
-
/** Result from a purge operation */
|
|
69
|
-
export interface PurgeResult {
|
|
70
|
-
userId: string;
|
|
71
|
-
anonymizedEmail: string;
|
|
72
|
-
deletedRoles: number;
|
|
73
|
-
deletedClaims: number;
|
|
74
|
-
deletedTwoFactor: number;
|
|
75
|
-
deletedOidcPayloads: number;
|
|
76
|
-
anonymizedAuditEntries: number;
|
|
77
|
-
}
|
|
78
60
|
/**
|
|
79
61
|
* Export all data Porta holds for a user as a structured JSON document.
|
|
80
62
|
*
|
|
@@ -87,24 +69,4 @@ export interface PurgeResult {
|
|
|
87
69
|
* @returns Complete GDPR export document
|
|
88
70
|
*/
|
|
89
71
|
export declare function exportUserData(user: User): Promise<UserDataExport>;
|
|
90
|
-
/**
|
|
91
|
-
* Irreversibly purge all PII for a user.
|
|
92
|
-
*
|
|
93
|
-
* Anonymizes the user record (email → purged-{id}@purged.local, clears
|
|
94
|
-
* name fields, sets status to 'inactive'). Deletes related records: role
|
|
95
|
-
* assignments, custom claim values, 2FA data, OIDC sessions/grants.
|
|
96
|
-
* Anonymizes audit log entries (actor_email → [purged]).
|
|
97
|
-
*
|
|
98
|
-
* Fires a `user.purged` audit event BEFORE anonymization for compliance trail.
|
|
99
|
-
*
|
|
100
|
-
* Safety checks:
|
|
101
|
-
* - Cannot purge users belonging to the super-admin organization
|
|
102
|
-
* - Requires explicit confirmation (caller responsibility)
|
|
103
|
-
*
|
|
104
|
-
* @param user - The user to purge (must be a full User object)
|
|
105
|
-
* @param actorId - ID of the admin performing the purge
|
|
106
|
-
* @returns Summary of what was deleted/anonymized
|
|
107
|
-
* @throws Error if user belongs to super-admin org
|
|
108
|
-
*/
|
|
109
|
-
export declare function purgeUserData(user: User, actorId: string): Promise<PurgeResult>;
|
|
110
72
|
//# sourceMappingURL=gdpr.d.ts.map
|
package/dist/users/gdpr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gdpr.d.ts","sourceRoot":"","sources":["../../src/users/gdpr.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gdpr.d.ts","sourceRoot":"","sources":["../../src/users/gdpr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMvC,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,YAAY,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,YAAY,EAAE,KAAK,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAkHxE"}
|
package/dist/users/gdpr.js
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* User data export.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* capabilities for Porta's user data. These functions collect all user-related
|
|
6
|
-
* data across multiple tables for export, or anonymize/delete it for purge.
|
|
4
|
+
* Collects the user-related data exposed by Porta's portability endpoint.
|
|
7
5
|
*
|
|
8
6
|
* **Export** collects: user profile, role assignments, custom claim values,
|
|
9
7
|
* audit log entries (as actor or target), 2FA enrollment status (NOT secrets),
|
|
10
8
|
* and active OIDC sessions/grants.
|
|
11
9
|
*
|
|
12
|
-
* **Purge** anonymizes the user record and audit entries, deletes all
|
|
13
|
-
* related data (roles, claims, 2FA, OIDC sessions), and writes the compliance
|
|
14
|
-
* audit event in the same transaction before commit.
|
|
15
|
-
*
|
|
16
|
-
* Safety: Purging super-admin org users is blocked to prevent lock-out.
|
|
17
|
-
*
|
|
18
10
|
* @module users/gdpr
|
|
19
11
|
*/
|
|
20
|
-
import {
|
|
21
|
-
import { writeAuditLogInTransaction } from '../lib/audit-log.js';
|
|
12
|
+
import { getPool } from '../lib/database.js';
|
|
22
13
|
// ---------------------------------------------------------------------------
|
|
23
14
|
// Export — collect all user data (Article 20)
|
|
24
15
|
// ---------------------------------------------------------------------------
|
|
@@ -110,102 +101,4 @@ export async function exportUserData(user) {
|
|
|
110
101
|
oidcSessions: parseInt(oidcResult.rows[0]?.count ?? '0', 10),
|
|
111
102
|
};
|
|
112
103
|
}
|
|
113
|
-
// ---------------------------------------------------------------------------
|
|
114
|
-
// Purge — anonymize/delete all user data (Article 17)
|
|
115
|
-
// ---------------------------------------------------------------------------
|
|
116
|
-
/**
|
|
117
|
-
* Irreversibly purge all PII for a user.
|
|
118
|
-
*
|
|
119
|
-
* Anonymizes the user record (email → purged-{id}@purged.local, clears
|
|
120
|
-
* name fields, sets status to 'inactive'). Deletes related records: role
|
|
121
|
-
* assignments, custom claim values, 2FA data, OIDC sessions/grants.
|
|
122
|
-
* Anonymizes audit log entries (actor_email → [purged]).
|
|
123
|
-
*
|
|
124
|
-
* Fires a `user.purged` audit event BEFORE anonymization for compliance trail.
|
|
125
|
-
*
|
|
126
|
-
* Safety checks:
|
|
127
|
-
* - Cannot purge users belonging to the super-admin organization
|
|
128
|
-
* - Requires explicit confirmation (caller responsibility)
|
|
129
|
-
*
|
|
130
|
-
* @param user - The user to purge (must be a full User object)
|
|
131
|
-
* @param actorId - ID of the admin performing the purge
|
|
132
|
-
* @returns Summary of what was deleted/anonymized
|
|
133
|
-
* @throws Error if user belongs to super-admin org
|
|
134
|
-
*/
|
|
135
|
-
export async function purgeUserData(user, actorId) {
|
|
136
|
-
return runDatabaseTransaction(async () => {
|
|
137
|
-
const client = getDatabaseTransactionClient();
|
|
138
|
-
if (!client)
|
|
139
|
-
throw new Error('GDPR purge transaction is unavailable');
|
|
140
|
-
// The authority check and destructive changes share the same transaction.
|
|
141
|
-
const orgCheck = await client.query('SELECT is_super_admin FROM organizations WHERE id = $1 FOR SHARE', [user.organizationId]);
|
|
142
|
-
if (orgCheck.rows[0]?.is_super_admin) {
|
|
143
|
-
throw new Error('Cannot purge users belonging to the super-admin organization');
|
|
144
|
-
}
|
|
145
|
-
// 1. Revoke all active OIDC sessions/grants
|
|
146
|
-
const oidcDelete = await client.query(`DELETE FROM oidc_payloads WHERE payload->>'accountId' = $1`, [user.id]);
|
|
147
|
-
// 2. Delete 2FA data (TOTP secrets, OTP codes, recovery codes)
|
|
148
|
-
await client.query('DELETE FROM user_totp WHERE user_id = $1', [user.id]);
|
|
149
|
-
await client.query('DELETE FROM two_factor_otp_codes WHERE user_id = $1', [user.id]);
|
|
150
|
-
const twoFactorDelete = await client.query('DELETE FROM two_factor_recovery_codes WHERE user_id = $1', [user.id]);
|
|
151
|
-
// 3. Delete custom claim values
|
|
152
|
-
const claimsDelete = await client.query('DELETE FROM user_claim_values WHERE user_id = $1', [
|
|
153
|
-
user.id,
|
|
154
|
-
]);
|
|
155
|
-
// 4. Delete role assignments
|
|
156
|
-
const rolesDelete = await client.query('DELETE FROM user_roles WHERE user_id = $1', [user.id]);
|
|
157
|
-
// 5. Anonymize audit log entries referencing this user
|
|
158
|
-
const auditUpdate = await client.query(`UPDATE audit_log
|
|
159
|
-
SET metadata = metadata || '{"purged": true}'::jsonb
|
|
160
|
-
WHERE actor_id = $1 OR user_id = $1`, [user.id]);
|
|
161
|
-
// 6. Anonymize user record — clear PII, keep ID for referential integrity
|
|
162
|
-
const anonymizedEmail = `purged-${user.id}@purged.local`;
|
|
163
|
-
await client.query(`UPDATE users SET
|
|
164
|
-
email = $2,
|
|
165
|
-
email_verified = false,
|
|
166
|
-
password_hash = NULL,
|
|
167
|
-
given_name = NULL,
|
|
168
|
-
family_name = NULL,
|
|
169
|
-
middle_name = NULL,
|
|
170
|
-
nickname = NULL,
|
|
171
|
-
preferred_username = NULL,
|
|
172
|
-
profile_url = NULL,
|
|
173
|
-
picture_url = NULL,
|
|
174
|
-
website_url = NULL,
|
|
175
|
-
gender = NULL,
|
|
176
|
-
birthdate = NULL,
|
|
177
|
-
zoneinfo = NULL,
|
|
178
|
-
locale = NULL,
|
|
179
|
-
phone_number = NULL,
|
|
180
|
-
phone_number_verified = false,
|
|
181
|
-
address_street = NULL,
|
|
182
|
-
address_locality = NULL,
|
|
183
|
-
address_region = NULL,
|
|
184
|
-
address_postal_code = NULL,
|
|
185
|
-
address_country = NULL,
|
|
186
|
-
status = 'inactive',
|
|
187
|
-
two_factor_enabled = false,
|
|
188
|
-
two_factor_method = NULL,
|
|
189
|
-
updated_at = NOW()
|
|
190
|
-
WHERE id = $1`, [user.id, anonymizedEmail]);
|
|
191
|
-
await writeAuditLogInTransaction(client, {
|
|
192
|
-
organizationId: user.organizationId,
|
|
193
|
-
userId: user.id,
|
|
194
|
-
actorId,
|
|
195
|
-
eventType: 'user.purged',
|
|
196
|
-
eventCategory: 'gdpr',
|
|
197
|
-
description: 'GDPR purge committed',
|
|
198
|
-
metadata: { userId: user.id },
|
|
199
|
-
});
|
|
200
|
-
return {
|
|
201
|
-
userId: user.id,
|
|
202
|
-
anonymizedEmail,
|
|
203
|
-
deletedRoles: rolesDelete.rowCount ?? 0,
|
|
204
|
-
deletedClaims: claimsDelete.rowCount ?? 0,
|
|
205
|
-
deletedTwoFactor: twoFactorDelete.rowCount ?? 0,
|
|
206
|
-
deletedOidcPayloads: oidcDelete.rowCount ?? 0,
|
|
207
|
-
anonymizedAuditEntries: auditUpdate.rowCount ?? 0,
|
|
208
|
-
};
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
104
|
//# sourceMappingURL=gdpr.js.map
|
package/dist/users/gdpr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gdpr.js","sourceRoot":"","sources":["../../src/users/gdpr.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gdpr.js","sourceRoot":"","sources":["../../src/users/gdpr.ts"],"names":[],"mappings":"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"}
|
package/dist/users/index.d.ts
CHANGED
|
@@ -7,14 +7,15 @@
|
|
|
7
7
|
* by the service layer.
|
|
8
8
|
*/
|
|
9
9
|
export type { User, UserRow, UserStatus, CreateUserInput, UpdateUserInput, AddressInput, UserListOptions, PaginatedResult, } from './types.js';
|
|
10
|
-
export { createUser, getUserById, getUserByEmail, updateUser, listUsersByOrganization, listUsersCursor, deactivateUser,
|
|
10
|
+
export { createUser, getUserById, getUserByEmail, updateUser, listUsersByOrganization, listUsersCursor, deactivateUser, activateUser, setUserPassword, verifyUserPassword, clearUserPassword, markEmailVerified, markEmailUnverified, recordLogin, recordFailedLogin, checkAutoUnlock, findUserForOidc, } from './service.js';
|
|
11
11
|
export { buildUserClaims, hasAddress } from './claims.js';
|
|
12
12
|
export type { OidcClaims, OidcAddress } from './claims.js';
|
|
13
13
|
export type { ListUsersCursorOptions } from './repository.js';
|
|
14
14
|
export type { CursorPaginatedResult } from '../lib/cursor.js';
|
|
15
15
|
export { UserNotFoundError, UserValidationError } from './errors.js';
|
|
16
|
-
export { validatePassword, MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH
|
|
16
|
+
export { validatePassword, MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH } from './password.js';
|
|
17
17
|
export type { PasswordValidationResult } from './password.js';
|
|
18
|
-
export { exportUserData
|
|
19
|
-
export
|
|
18
|
+
export { exportUserData } from './gdpr.js';
|
|
19
|
+
export { deleteUser } from './service.js';
|
|
20
|
+
export type { UserDataExport } from './gdpr.js';
|
|
20
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/users/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,IAAI,EACJ,OAAO,EACP,UAAU,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/users/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,IAAI,EACJ,OAAO,EACP,UAAU,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,YAAY,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3F,YAAY,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/users/index.js
CHANGED
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
* by the service layer.
|
|
8
8
|
*/
|
|
9
9
|
// Service functions
|
|
10
|
-
export { createUser, getUserById, getUserByEmail, updateUser, listUsersByOrganization, listUsersCursor, deactivateUser,
|
|
10
|
+
export { createUser, getUserById, getUserByEmail, updateUser, listUsersByOrganization, listUsersCursor, deactivateUser, activateUser, setUserPassword, verifyUserPassword, clearUserPassword, markEmailVerified, markEmailUnverified, recordLogin, recordFailedLogin, checkAutoUnlock, findUserForOidc, } from './service.js';
|
|
11
11
|
// Claims builder
|
|
12
12
|
export { buildUserClaims, hasAddress } from './claims.js';
|
|
13
13
|
// Error types
|
|
14
14
|
export { UserNotFoundError, UserValidationError } from './errors.js';
|
|
15
15
|
// Password utilities (for external consumers like CLI)
|
|
16
|
-
export { validatePassword, MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH
|
|
17
|
-
//
|
|
18
|
-
export { exportUserData
|
|
16
|
+
export { validatePassword, MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH } from './password.js';
|
|
17
|
+
// User data export
|
|
18
|
+
export { exportUserData } from './gdpr.js';
|
|
19
|
+
export { deleteUser } from './service.js';
|
|
19
20
|
//# sourceMappingURL=index.js.map
|