@portaidentity/server 1.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 +11 -0
- package/LICENSE +21 -0
- package/README.md +33 -0
- package/dist/applications/cache.d.ts +64 -0
- package/dist/applications/cache.d.ts.map +1 -0
- package/dist/applications/cache.js +161 -0
- package/dist/applications/cache.js.map +1 -0
- package/dist/applications/errors.d.ts +25 -0
- package/dist/applications/errors.d.ts.map +1 -0
- package/dist/applications/errors.js +31 -0
- package/dist/applications/errors.js.map +1 -0
- package/dist/applications/index.d.ts +17 -0
- package/dist/applications/index.d.ts.map +1 -0
- package/dist/applications/index.js +19 -0
- package/dist/applications/index.js.map +1 -0
- package/dist/applications/repository.d.ts +184 -0
- package/dist/applications/repository.d.ts.map +1 -0
- package/dist/applications/repository.js +367 -0
- package/dist/applications/repository.js.map +1 -0
- package/dist/applications/service.d.ts +160 -0
- package/dist/applications/service.d.ts.map +1 -0
- package/dist/applications/service.js +388 -0
- package/dist/applications/service.js.map +1 -0
- package/dist/applications/slugs.d.ts +61 -0
- package/dist/applications/slugs.d.ts.map +1 -0
- package/dist/applications/slugs.js +115 -0
- package/dist/applications/slugs.js.map +1 -0
- package/dist/applications/types.d.ts +129 -0
- package/dist/applications/types.d.ts.map +1 -0
- package/dist/applications/types.js +62 -0
- package/dist/applications/types.js.map +1 -0
- package/dist/auth/csrf.d.ts +71 -0
- package/dist/auth/csrf.d.ts.map +1 -0
- package/dist/auth/csrf.js +112 -0
- package/dist/auth/csrf.js.map +1 -0
- package/dist/auth/email-renderer.d.ts +37 -0
- package/dist/auth/email-renderer.d.ts.map +1 -0
- package/dist/auth/email-renderer.js +116 -0
- package/dist/auth/email-renderer.js.map +1 -0
- package/dist/auth/email-service.d.ts +154 -0
- package/dist/auth/email-service.d.ts.map +1 -0
- package/dist/auth/email-service.js +415 -0
- package/dist/auth/email-service.js.map +1 -0
- package/dist/auth/email-transport.d.ts +65 -0
- package/dist/auth/email-transport.d.ts.map +1 -0
- package/dist/auth/email-transport.js +82 -0
- package/dist/auth/email-transport.js.map +1 -0
- package/dist/auth/i18n.d.ts +81 -0
- package/dist/auth/i18n.d.ts.map +1 -0
- package/dist/auth/i18n.js +395 -0
- package/dist/auth/i18n.js.map +1 -0
- package/dist/auth/index.d.ts +28 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +31 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/interaction-authority.d.ts +39 -0
- package/dist/auth/interaction-authority.d.ts.map +1 -0
- package/dist/auth/interaction-authority.js +30 -0
- package/dist/auth/interaction-authority.js.map +1 -0
- package/dist/auth/magic-link-session.d.ts +81 -0
- package/dist/auth/magic-link-session.d.ts.map +1 -0
- package/dist/auth/magic-link-session.js +183 -0
- package/dist/auth/magic-link-session.js.map +1 -0
- package/dist/auth/rate-limiter.d.ts +143 -0
- package/dist/auth/rate-limiter.d.ts.map +1 -0
- package/dist/auth/rate-limiter.js +220 -0
- package/dist/auth/rate-limiter.js.map +1 -0
- package/dist/auth/recovery-crypto.d.ts +34 -0
- package/dist/auth/recovery-crypto.d.ts.map +1 -0
- package/dist/auth/recovery-crypto.js +103 -0
- package/dist/auth/recovery-crypto.js.map +1 -0
- package/dist/auth/recovery-job-processor.d.ts +24 -0
- package/dist/auth/recovery-job-processor.d.ts.map +1 -0
- package/dist/auth/recovery-job-processor.js +123 -0
- package/dist/auth/recovery-job-processor.js.map +1 -0
- package/dist/auth/recovery-job-repository.d.ts +219 -0
- package/dist/auth/recovery-job-repository.d.ts.map +1 -0
- package/dist/auth/recovery-job-repository.js +340 -0
- package/dist/auth/recovery-job-repository.js.map +1 -0
- package/dist/auth/recovery-service.d.ts +27 -0
- package/dist/auth/recovery-service.d.ts.map +1 -0
- package/dist/auth/recovery-service.js +53 -0
- package/dist/auth/recovery-service.js.map +1 -0
- package/dist/auth/recovery-worker.d.ts +158 -0
- package/dist/auth/recovery-worker.d.ts.map +1 -0
- package/dist/auth/recovery-worker.js +306 -0
- package/dist/auth/recovery-worker.js.map +1 -0
- package/dist/auth/template-engine.d.ts +134 -0
- package/dist/auth/template-engine.d.ts.map +1 -0
- package/dist/auth/template-engine.js +225 -0
- package/dist/auth/template-engine.js.map +1 -0
- package/dist/auth/token-repository.d.ts +238 -0
- package/dist/auth/token-repository.d.ts.map +1 -0
- package/dist/auth/token-repository.js +475 -0
- package/dist/auth/token-repository.js.map +1 -0
- package/dist/auth/tokens.d.ts +45 -0
- package/dist/auth/tokens.d.ts.map +1 -0
- package/dist/auth/tokens.js +51 -0
- package/dist/auth/tokens.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +55 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +90 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/commands/health.d.ts +20 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +80 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/init.d.ts +48 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +349 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +19 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +88 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/seed.d.ts +19 -0
- package/dist/cli/commands/seed.d.ts.map +1 -0
- package/dist/cli/commands/seed.js +71 -0
- package/dist/cli/commands/seed.js.map +1 -0
- package/dist/cli/commands/user-2fa.d.ts +29 -0
- package/dist/cli/commands/user-2fa.d.ts.map +1 -0
- package/dist/cli/commands/user-2fa.js +113 -0
- package/dist/cli/commands/user-2fa.js.map +1 -0
- package/dist/cli/error-handler.d.ts +31 -0
- package/dist/cli/error-handler.d.ts.map +1 -0
- package/dist/cli/error-handler.js +65 -0
- package/dist/cli/error-handler.js.map +1 -0
- package/dist/cli/index.d.ts +48 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +99 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +94 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +124 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/prompt.d.ts +48 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +96 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/clients/cache.d.ts +63 -0
- package/dist/clients/cache.d.ts.map +1 -0
- package/dist/clients/cache.js +160 -0
- package/dist/clients/cache.js.map +1 -0
- package/dist/clients/crypto.d.ts +69 -0
- package/dist/clients/crypto.d.ts.map +1 -0
- package/dist/clients/crypto.js +83 -0
- package/dist/clients/crypto.js.map +1 -0
- package/dist/clients/errors.d.ts +27 -0
- package/dist/clients/errors.d.ts.map +1 -0
- package/dist/clients/errors.js +33 -0
- package/dist/clients/errors.js.map +1 -0
- package/dist/clients/index.d.ts +19 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +23 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/repository.d.ts +161 -0
- package/dist/clients/repository.d.ts.map +1 -0
- package/dist/clients/repository.js +318 -0
- package/dist/clients/repository.js.map +1 -0
- package/dist/clients/resolve-login-methods.d.ts +74 -0
- package/dist/clients/resolve-login-methods.d.ts.map +1 -0
- package/dist/clients/resolve-login-methods.js +68 -0
- package/dist/clients/resolve-login-methods.js.map +1 -0
- package/dist/clients/secret-repository.d.ts +109 -0
- package/dist/clients/secret-repository.d.ts.map +1 -0
- package/dist/clients/secret-repository.js +166 -0
- package/dist/clients/secret-repository.js.map +1 -0
- package/dist/clients/secret-service.d.ts +87 -0
- package/dist/clients/secret-service.d.ts.map +1 -0
- package/dist/clients/secret-service.js +204 -0
- package/dist/clients/secret-service.js.map +1 -0
- package/dist/clients/service.d.ts +158 -0
- package/dist/clients/service.d.ts.map +1 -0
- package/dist/clients/service.js +523 -0
- package/dist/clients/service.js.map +1 -0
- package/dist/clients/types.d.ts +214 -0
- package/dist/clients/types.d.ts.map +1 -0
- package/dist/clients/types.js +77 -0
- package/dist/clients/types.js.map +1 -0
- package/dist/clients/validators.d.ts +87 -0
- package/dist/clients/validators.d.ts.map +1 -0
- package/dist/clients/validators.js +164 -0
- package/dist/clients/validators.js.map +1 -0
- package/dist/config/index.d.ts +23 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +52 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +35 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +167 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/custom-claims/cache.d.ts +48 -0
- package/dist/custom-claims/cache.d.ts.map +1 -0
- package/dist/custom-claims/cache.js +122 -0
- package/dist/custom-claims/cache.js.map +1 -0
- package/dist/custom-claims/errors.d.ts +25 -0
- package/dist/custom-claims/errors.d.ts.map +1 -0
- package/dist/custom-claims/errors.js +31 -0
- package/dist/custom-claims/errors.js.map +1 -0
- package/dist/custom-claims/index.d.ts +14 -0
- package/dist/custom-claims/index.d.ts.map +1 -0
- package/dist/custom-claims/index.js +17 -0
- package/dist/custom-claims/index.js.map +1 -0
- package/dist/custom-claims/repository.d.ts +147 -0
- package/dist/custom-claims/repository.d.ts.map +1 -0
- package/dist/custom-claims/repository.js +338 -0
- package/dist/custom-claims/repository.js.map +1 -0
- package/dist/custom-claims/service.d.ts +129 -0
- package/dist/custom-claims/service.d.ts.map +1 -0
- package/dist/custom-claims/service.js +296 -0
- package/dist/custom-claims/service.js.map +1 -0
- package/dist/custom-claims/types.d.ts +132 -0
- package/dist/custom-claims/types.d.ts.map +1 -0
- package/dist/custom-claims/types.js +61 -0
- package/dist/custom-claims/types.js.map +1 -0
- package/dist/custom-claims/validators.d.ts +61 -0
- package/dist/custom-claims/validators.d.ts.map +1 -0
- package/dist/custom-claims/validators.js +136 -0
- package/dist/custom-claims/validators.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/admin-permissions.d.ts +147 -0
- package/dist/lib/admin-permissions.d.ts.map +1 -0
- package/dist/lib/admin-permissions.js +261 -0
- package/dist/lib/admin-permissions.js.map +1 -0
- package/dist/lib/audit-log.d.ts +45 -0
- package/dist/lib/audit-log.d.ts.map +1 -0
- package/dist/lib/audit-log.js +79 -0
- package/dist/lib/audit-log.js.map +1 -0
- package/dist/lib/branding-assets.d.ts +47 -0
- package/dist/lib/branding-assets.d.ts.map +1 -0
- package/dist/lib/branding-assets.js +93 -0
- package/dist/lib/branding-assets.js.map +1 -0
- package/dist/lib/bulk-operations.d.ts +54 -0
- package/dist/lib/bulk-operations.d.ts.map +1 -0
- package/dist/lib/bulk-operations.js +201 -0
- package/dist/lib/bulk-operations.js.map +1 -0
- package/dist/lib/cursor.d.ts +110 -0
- package/dist/lib/cursor.d.ts.map +1 -0
- package/dist/lib/cursor.js +115 -0
- package/dist/lib/cursor.js.map +1 -0
- package/dist/lib/data-export.d.ts +67 -0
- package/dist/lib/data-export.d.ts.map +1 -0
- package/dist/lib/data-export.js +272 -0
- package/dist/lib/data-export.js.map +1 -0
- package/dist/lib/data-import-plan.d.ts +50 -0
- package/dist/lib/data-import-plan.d.ts.map +1 -0
- package/dist/lib/data-import-plan.js +235 -0
- package/dist/lib/data-import-plan.js.map +1 -0
- package/dist/lib/data-import.d.ts +276 -0
- package/dist/lib/data-import.d.ts.map +1 -0
- package/dist/lib/data-import.js +1694 -0
- package/dist/lib/data-import.js.map +1 -0
- package/dist/lib/database.d.ts +22 -0
- package/dist/lib/database.d.ts.map +1 -0
- package/dist/lib/database.js +103 -0
- package/dist/lib/database.js.map +1 -0
- package/dist/lib/entity-history.d.ts +52 -0
- package/dist/lib/entity-history.d.ts.map +1 -0
- package/dist/lib/entity-history.js +121 -0
- package/dist/lib/entity-history.js.map +1 -0
- package/dist/lib/etag.d.ts +92 -0
- package/dist/lib/etag.d.ts.map +1 -0
- package/dist/lib/etag.js +155 -0
- package/dist/lib/etag.js.map +1 -0
- package/dist/lib/image-validator.d.ts +44 -0
- package/dist/lib/image-validator.d.ts.map +1 -0
- package/dist/lib/image-validator.js +204 -0
- package/dist/lib/image-validator.js.map +1 -0
- package/dist/lib/logger.d.ts +15 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +84 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/migrator.d.ts +14 -0
- package/dist/lib/migrator.d.ts.map +1 -0
- package/dist/lib/migrator.js +34 -0
- package/dist/lib/migrator.js.map +1 -0
- package/dist/lib/redis.d.ts +5 -0
- package/dist/lib/redis.d.ts.map +1 -0
- package/dist/lib/redis.js +29 -0
- package/dist/lib/redis.js.map +1 -0
- package/dist/lib/runtime-paths.d.ts +38 -0
- package/dist/lib/runtime-paths.d.ts.map +1 -0
- package/dist/lib/runtime-paths.js +50 -0
- package/dist/lib/runtime-paths.js.map +1 -0
- package/dist/lib/session-tracking.d.ts +81 -0
- package/dist/lib/session-tracking.d.ts.map +1 -0
- package/dist/lib/session-tracking.js +145 -0
- package/dist/lib/session-tracking.js.map +1 -0
- package/dist/lib/signing-key-crypto.d.ts +53 -0
- package/dist/lib/signing-key-crypto.d.ts.map +1 -0
- package/dist/lib/signing-key-crypto.js +108 -0
- package/dist/lib/signing-key-crypto.js.map +1 -0
- package/dist/lib/signing-keys.d.ts +141 -0
- package/dist/lib/signing-keys.d.ts.map +1 -0
- package/dist/lib/signing-keys.js +206 -0
- package/dist/lib/signing-keys.js.map +1 -0
- package/dist/lib/stats.d.ts +83 -0
- package/dist/lib/stats.d.ts.map +1 -0
- package/dist/lib/stats.js +187 -0
- package/dist/lib/stats.js.map +1 -0
- package/dist/lib/super-admin-protection.d.ts +69 -0
- package/dist/lib/super-admin-protection.d.ts.map +1 -0
- package/dist/lib/super-admin-protection.js +102 -0
- package/dist/lib/super-admin-protection.js.map +1 -0
- package/dist/lib/system-config.d.ts +79 -0
- package/dist/lib/system-config.d.ts.map +1 -0
- package/dist/lib/system-config.js +159 -0
- package/dist/lib/system-config.js.map +1 -0
- package/dist/middleware/admin-auth.d.ts +100 -0
- package/dist/middleware/admin-auth.d.ts.map +1 -0
- package/dist/middleware/admin-auth.js +241 -0
- package/dist/middleware/admin-auth.js.map +1 -0
- package/dist/middleware/admin-cors.d.ts +41 -0
- package/dist/middleware/admin-cors.d.ts.map +1 -0
- package/dist/middleware/admin-cors.js +83 -0
- package/dist/middleware/admin-cors.js.map +1 -0
- package/dist/middleware/admin-mutation-audit.d.ts +9 -0
- package/dist/middleware/admin-mutation-audit.d.ts.map +1 -0
- package/dist/middleware/admin-mutation-audit.js +76 -0
- package/dist/middleware/admin-mutation-audit.js.map +1 -0
- package/dist/middleware/admin-rate-limiter.d.ts +56 -0
- package/dist/middleware/admin-rate-limiter.d.ts.map +1 -0
- package/dist/middleware/admin-rate-limiter.js +97 -0
- package/dist/middleware/admin-rate-limiter.js.map +1 -0
- package/dist/middleware/client-secret-hash.d.ts +34 -0
- package/dist/middleware/client-secret-hash.d.ts.map +1 -0
- package/dist/middleware/client-secret-hash.js +74 -0
- package/dist/middleware/client-secret-hash.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +3 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +93 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/health.d.ts +3 -0
- package/dist/middleware/health.d.ts.map +1 -0
- package/dist/middleware/health.js +35 -0
- package/dist/middleware/health.js.map +1 -0
- package/dist/middleware/metrics.d.ts +40 -0
- package/dist/middleware/metrics.d.ts.map +1 -0
- package/dist/middleware/metrics.js +75 -0
- package/dist/middleware/metrics.js.map +1 -0
- package/dist/middleware/oidc-client-tenant.d.ts +37 -0
- package/dist/middleware/oidc-client-tenant.d.ts.map +1 -0
- package/dist/middleware/oidc-client-tenant.js +156 -0
- package/dist/middleware/oidc-client-tenant.js.map +1 -0
- package/dist/middleware/oidc-cors.d.ts +33 -0
- package/dist/middleware/oidc-cors.d.ts.map +1 -0
- package/dist/middleware/oidc-cors.js +68 -0
- package/dist/middleware/oidc-cors.js.map +1 -0
- package/dist/middleware/oidc-preflight-cors.d.ts +54 -0
- package/dist/middleware/oidc-preflight-cors.d.ts.map +1 -0
- package/dist/middleware/oidc-preflight-cors.js +267 -0
- package/dist/middleware/oidc-preflight-cors.js.map +1 -0
- package/dist/middleware/prompt-login-reset.d.ts +103 -0
- package/dist/middleware/prompt-login-reset.d.ts.map +1 -0
- package/dist/middleware/prompt-login-reset.js +204 -0
- package/dist/middleware/prompt-login-reset.js.map +1 -0
- package/dist/middleware/ready.d.ts +23 -0
- package/dist/middleware/ready.d.ts.map +1 -0
- package/dist/middleware/ready.js +60 -0
- package/dist/middleware/ready.js.map +1 -0
- package/dist/middleware/request-logger.d.ts +27 -0
- package/dist/middleware/request-logger.d.ts.map +1 -0
- package/dist/middleware/request-logger.js +46 -0
- package/dist/middleware/request-logger.js.map +1 -0
- package/dist/middleware/require-permission.d.ts +28 -0
- package/dist/middleware/require-permission.d.ts.map +1 -0
- package/dist/middleware/require-permission.js +63 -0
- package/dist/middleware/require-permission.js.map +1 -0
- package/dist/middleware/require-user-organization.d.ts +18 -0
- package/dist/middleware/require-user-organization.d.ts.map +1 -0
- package/dist/middleware/require-user-organization.js +53 -0
- package/dist/middleware/require-user-organization.js.map +1 -0
- package/dist/middleware/root-page.d.ts +62 -0
- package/dist/middleware/root-page.d.ts.map +1 -0
- package/dist/middleware/root-page.js +134 -0
- package/dist/middleware/root-page.js.map +1 -0
- package/dist/middleware/security-headers.d.ts +98 -0
- package/dist/middleware/security-headers.d.ts.map +1 -0
- package/dist/middleware/security-headers.js +159 -0
- package/dist/middleware/security-headers.js.map +1 -0
- package/dist/middleware/tenant-resolver.d.ts +37 -0
- package/dist/middleware/tenant-resolver.d.ts.map +1 -0
- package/dist/middleware/tenant-resolver.js +71 -0
- package/dist/middleware/tenant-resolver.js.map +1 -0
- package/dist/middleware/token-rate-limiter.d.ts +89 -0
- package/dist/middleware/token-rate-limiter.d.ts.map +1 -0
- package/dist/middleware/token-rate-limiter.js +189 -0
- package/dist/middleware/token-rate-limiter.js.map +1 -0
- package/dist/oidc/account-finder.d.ts +52 -0
- package/dist/oidc/account-finder.d.ts.map +1 -0
- package/dist/oidc/account-finder.js +134 -0
- package/dist/oidc/account-finder.js.map +1 -0
- package/dist/oidc/adapter-factory.d.ts +90 -0
- package/dist/oidc/adapter-factory.d.ts.map +1 -0
- package/dist/oidc/adapter-factory.js +165 -0
- package/dist/oidc/adapter-factory.js.map +1 -0
- package/dist/oidc/configuration.d.ts +155 -0
- package/dist/oidc/configuration.d.ts.map +1 -0
- package/dist/oidc/configuration.js +531 -0
- package/dist/oidc/configuration.js.map +1 -0
- package/dist/oidc/postgres-adapter.d.ts +159 -0
- package/dist/oidc/postgres-adapter.d.ts.map +1 -0
- package/dist/oidc/postgres-adapter.js +222 -0
- package/dist/oidc/postgres-adapter.js.map +1 -0
- package/dist/oidc/protocol-security-observer.d.ts +38 -0
- package/dist/oidc/protocol-security-observer.d.ts.map +1 -0
- package/dist/oidc/protocol-security-observer.js +93 -0
- package/dist/oidc/protocol-security-observer.js.map +1 -0
- package/dist/oidc/provider.d.ts +37 -0
- package/dist/oidc/provider.d.ts.map +1 -0
- package/dist/oidc/provider.js +71 -0
- package/dist/oidc/provider.js.map +1 -0
- package/dist/oidc/redis-adapter.d.ts +140 -0
- package/dist/oidc/redis-adapter.d.ts.map +1 -0
- package/dist/oidc/redis-adapter.js +344 -0
- package/dist/oidc/redis-adapter.js.map +1 -0
- package/dist/organizations/cache.d.ts +60 -0
- package/dist/organizations/cache.d.ts.map +1 -0
- package/dist/organizations/cache.js +157 -0
- package/dist/organizations/cache.js.map +1 -0
- package/dist/organizations/errors.d.ts +25 -0
- package/dist/organizations/errors.d.ts.map +1 -0
- package/dist/organizations/errors.js +31 -0
- package/dist/organizations/errors.js.map +1 -0
- package/dist/organizations/index.d.ts +15 -0
- package/dist/organizations/index.d.ts.map +1 -0
- package/dist/organizations/index.js +15 -0
- package/dist/organizations/index.js.map +1 -0
- package/dist/organizations/repository.d.ts +183 -0
- package/dist/organizations/repository.d.ts.map +1 -0
- package/dist/organizations/repository.js +354 -0
- package/dist/organizations/repository.js.map +1 -0
- package/dist/organizations/service.d.ts +168 -0
- package/dist/organizations/service.d.ts.map +1 -0
- package/dist/organizations/service.js +511 -0
- package/dist/organizations/service.js.map +1 -0
- package/dist/organizations/slugs.d.ts +57 -0
- package/dist/organizations/slugs.d.ts.map +1 -0
- package/dist/organizations/slugs.js +130 -0
- package/dist/organizations/slugs.js.map +1 -0
- package/dist/organizations/types.d.ts +146 -0
- package/dist/organizations/types.d.ts.map +1 -0
- package/dist/organizations/types.js +49 -0
- package/dist/organizations/types.js.map +1 -0
- package/dist/rbac/cache.d.ts +110 -0
- package/dist/rbac/cache.d.ts.map +1 -0
- package/dist/rbac/cache.js +271 -0
- package/dist/rbac/cache.js.map +1 -0
- package/dist/rbac/errors.d.ts +34 -0
- package/dist/rbac/errors.d.ts.map +1 -0
- package/dist/rbac/errors.js +43 -0
- package/dist/rbac/errors.js.map +1 -0
- package/dist/rbac/index.d.ts +17 -0
- package/dist/rbac/index.d.ts.map +1 -0
- package/dist/rbac/index.js +21 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/rbac/mapping-repository.d.ts +121 -0
- package/dist/rbac/mapping-repository.d.ts.map +1 -0
- package/dist/rbac/mapping-repository.js +224 -0
- package/dist/rbac/mapping-repository.js.map +1 -0
- package/dist/rbac/permission-repository.d.ts +100 -0
- package/dist/rbac/permission-repository.d.ts.map +1 -0
- package/dist/rbac/permission-repository.js +190 -0
- package/dist/rbac/permission-repository.js.map +1 -0
- package/dist/rbac/permission-service.d.ts +85 -0
- package/dist/rbac/permission-service.d.ts.map +1 -0
- package/dist/rbac/permission-service.js +179 -0
- package/dist/rbac/permission-service.js.map +1 -0
- package/dist/rbac/role-repository.d.ts +104 -0
- package/dist/rbac/role-repository.d.ts.map +1 -0
- package/dist/rbac/role-repository.js +202 -0
- package/dist/rbac/role-repository.js.map +1 -0
- package/dist/rbac/role-service.d.ts +111 -0
- package/dist/rbac/role-service.d.ts.map +1 -0
- package/dist/rbac/role-service.js +256 -0
- package/dist/rbac/role-service.js.map +1 -0
- package/dist/rbac/slugs.d.ts +116 -0
- package/dist/rbac/slugs.d.ts.map +1 -0
- package/dist/rbac/slugs.js +178 -0
- package/dist/rbac/slugs.js.map +1 -0
- package/dist/rbac/types.d.ts +187 -0
- package/dist/rbac/types.d.ts.map +1 -0
- package/dist/rbac/types.js +75 -0
- package/dist/rbac/types.js.map +1 -0
- package/dist/rbac/user-role-service.d.ts +101 -0
- package/dist/rbac/user-role-service.d.ts.map +1 -0
- package/dist/rbac/user-role-service.js +166 -0
- package/dist/rbac/user-role-service.js.map +1 -0
- package/dist/routes/applications.d.ts +40 -0
- package/dist/routes/applications.d.ts.map +1 -0
- package/dist/routes/applications.js +284 -0
- package/dist/routes/applications.js.map +1 -0
- package/dist/routes/audit.d.ts +31 -0
- package/dist/routes/audit.d.ts.map +1 -0
- package/dist/routes/audit.js +140 -0
- package/dist/routes/audit.js.map +1 -0
- package/dist/routes/branding.d.ts +17 -0
- package/dist/routes/branding.d.ts.map +1 -0
- package/dist/routes/branding.js +104 -0
- package/dist/routes/branding.js.map +1 -0
- package/dist/routes/bulk.d.ts +37 -0
- package/dist/routes/bulk.d.ts.map +1 -0
- package/dist/routes/bulk.js +94 -0
- package/dist/routes/bulk.js.map +1 -0
- package/dist/routes/clients.d.ts +44 -0
- package/dist/routes/clients.d.ts.map +1 -0
- package/dist/routes/clients.js +353 -0
- package/dist/routes/clients.js.map +1 -0
- package/dist/routes/config.d.ts +35 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +115 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/custom-claims.d.ts +38 -0
- package/dist/routes/custom-claims.d.ts.map +1 -0
- package/dist/routes/custom-claims.js +208 -0
- package/dist/routes/custom-claims.js.map +1 -0
- package/dist/routes/exports.d.ts +21 -0
- package/dist/routes/exports.d.ts.map +1 -0
- package/dist/routes/exports.js +98 -0
- package/dist/routes/exports.js.map +1 -0
- package/dist/routes/imports.d.ts +18 -0
- package/dist/routes/imports.d.ts.map +1 -0
- package/dist/routes/imports.js +72 -0
- package/dist/routes/imports.js.map +1 -0
- package/dist/routes/interactions.d.ts +111 -0
- package/dist/routes/interactions.d.ts.map +1 -0
- package/dist/routes/interactions.js +1074 -0
- package/dist/routes/interactions.js.map +1 -0
- package/dist/routes/invitation.d.ts +31 -0
- package/dist/routes/invitation.d.ts.map +1 -0
- package/dist/routes/invitation.js +342 -0
- package/dist/routes/invitation.js.map +1 -0
- package/dist/routes/keys.d.ts +28 -0
- package/dist/routes/keys.d.ts.map +1 -0
- package/dist/routes/keys.js +91 -0
- package/dist/routes/keys.js.map +1 -0
- package/dist/routes/magic-link.d.ts +43 -0
- package/dist/routes/magic-link.d.ts.map +1 -0
- package/dist/routes/magic-link.js +264 -0
- package/dist/routes/magic-link.js.map +1 -0
- package/dist/routes/organizations.d.ts +38 -0
- package/dist/routes/organizations.d.ts.map +1 -0
- package/dist/routes/organizations.js +347 -0
- package/dist/routes/organizations.js.map +1 -0
- package/dist/routes/password-reset.d.ts +65 -0
- package/dist/routes/password-reset.d.ts.map +1 -0
- package/dist/routes/password-reset.js +493 -0
- package/dist/routes/password-reset.js.map +1 -0
- package/dist/routes/permissions.d.ts +33 -0
- package/dist/routes/permissions.d.ts.map +1 -0
- package/dist/routes/permissions.js +166 -0
- package/dist/routes/permissions.js.map +1 -0
- package/dist/routes/roles.d.ts +37 -0
- package/dist/routes/roles.d.ts.map +1 -0
- package/dist/routes/roles.js +222 -0
- package/dist/routes/roles.js.map +1 -0
- package/dist/routes/sessions.d.ts +37 -0
- package/dist/routes/sessions.d.ts.map +1 -0
- package/dist/routes/sessions.js +121 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/routes/stats.d.ts +28 -0
- package/dist/routes/stats.d.ts.map +1 -0
- package/dist/routes/stats.js +65 -0
- package/dist/routes/stats.js.map +1 -0
- package/dist/routes/two-factor-admin.d.ts +54 -0
- package/dist/routes/two-factor-admin.d.ts.map +1 -0
- package/dist/routes/two-factor-admin.js +344 -0
- package/dist/routes/two-factor-admin.js.map +1 -0
- package/dist/routes/two-factor.d.ts +31 -0
- package/dist/routes/two-factor.d.ts.map +1 -0
- package/dist/routes/two-factor.js +595 -0
- package/dist/routes/two-factor.js.map +1 -0
- package/dist/routes/user-roles.d.ts +33 -0
- package/dist/routes/user-roles.d.ts.map +1 -0
- package/dist/routes/user-roles.js +129 -0
- package/dist/routes/user-roles.js.map +1 -0
- package/dist/routes/users.d.ts +61 -0
- package/dist/routes/users.d.ts.map +1 -0
- package/dist/routes/users.js +868 -0
- package/dist/routes/users.js.map +1 -0
- package/dist/security/decision-context.d.ts +52 -0
- package/dist/security/decision-context.d.ts.map +1 -0
- package/dist/security/decision-context.js +150 -0
- package/dist/security/decision-context.js.map +1 -0
- package/dist/security/decision-event.d.ts +128 -0
- package/dist/security/decision-event.d.ts.map +1 -0
- package/dist/security/decision-event.js +225 -0
- package/dist/security/decision-event.js.map +1 -0
- package/dist/security/transport-decision.d.ts +6 -0
- package/dist/security/transport-decision.d.ts.map +1 -0
- package/dist/security/transport-decision.js +37 -0
- package/dist/security/transport-decision.js.map +1 -0
- package/dist/server.d.ts +50 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +491 -0
- package/dist/server.js.map +1 -0
- package/dist/two-factor/cache.d.ts +47 -0
- package/dist/two-factor/cache.d.ts.map +1 -0
- package/dist/two-factor/cache.js +122 -0
- package/dist/two-factor/cache.js.map +1 -0
- package/dist/two-factor/crypto.d.ts +41 -0
- package/dist/two-factor/crypto.d.ts.map +1 -0
- package/dist/two-factor/crypto.js +94 -0
- package/dist/two-factor/crypto.js.map +1 -0
- package/dist/two-factor/errors.d.ts +82 -0
- package/dist/two-factor/errors.d.ts.map +1 -0
- package/dist/two-factor/errors.js +112 -0
- package/dist/two-factor/errors.js.map +1 -0
- package/dist/two-factor/index.d.ts +18 -0
- package/dist/two-factor/index.d.ts.map +1 -0
- package/dist/two-factor/index.js +25 -0
- package/dist/two-factor/index.js.map +1 -0
- package/dist/two-factor/otp.d.ts +43 -0
- package/dist/two-factor/otp.d.ts.map +1 -0
- package/dist/two-factor/otp.js +57 -0
- package/dist/two-factor/otp.js.map +1 -0
- package/dist/two-factor/recovery.d.ts +45 -0
- package/dist/two-factor/recovery.d.ts.map +1 -0
- package/dist/two-factor/recovery.js +104 -0
- package/dist/two-factor/recovery.js.map +1 -0
- package/dist/two-factor/repository.d.ts +156 -0
- package/dist/two-factor/repository.d.ts.map +1 -0
- package/dist/two-factor/repository.js +251 -0
- package/dist/two-factor/repository.js.map +1 -0
- package/dist/two-factor/service.d.ts +232 -0
- package/dist/two-factor/service.d.ts.map +1 -0
- package/dist/two-factor/service.js +599 -0
- package/dist/two-factor/service.js.map +1 -0
- package/dist/two-factor/totp.d.ts +57 -0
- package/dist/two-factor/totp.d.ts.map +1 -0
- package/dist/two-factor/totp.js +96 -0
- package/dist/two-factor/totp.js.map +1 -0
- package/dist/two-factor/types.d.ts +152 -0
- package/dist/two-factor/types.d.ts.map +1 -0
- package/dist/two-factor/types.js +64 -0
- package/dist/two-factor/types.js.map +1 -0
- package/dist/users/cache.d.ts +49 -0
- package/dist/users/cache.d.ts.map +1 -0
- package/dist/users/cache.js +140 -0
- package/dist/users/cache.js.map +1 -0
- package/dist/users/claims.d.ts +67 -0
- package/dist/users/claims.d.ts.map +1 -0
- package/dist/users/claims.js +104 -0
- package/dist/users/claims.js.map +1 -0
- package/dist/users/errors.d.ts +25 -0
- package/dist/users/errors.d.ts.map +1 -0
- package/dist/users/errors.js +31 -0
- package/dist/users/errors.js.map +1 -0
- package/dist/users/gdpr.d.ts +110 -0
- package/dist/users/gdpr.d.ts.map +1 -0
- package/dist/users/gdpr.js +211 -0
- package/dist/users/gdpr.js.map +1 -0
- package/dist/users/index.d.ts +20 -0
- package/dist/users/index.d.ts.map +1 -0
- package/dist/users/index.js +19 -0
- package/dist/users/index.js.map +1 -0
- package/dist/users/password.d.ts +85 -0
- package/dist/users/password.d.ts.map +1 -0
- package/dist/users/password.js +138 -0
- package/dist/users/password.js.map +1 -0
- package/dist/users/repository.d.ts +263 -0
- package/dist/users/repository.d.ts.map +1 -0
- package/dist/users/repository.js +499 -0
- package/dist/users/repository.js.map +1 -0
- package/dist/users/service.d.ts +299 -0
- package/dist/users/service.d.ts.map +1 -0
- package/dist/users/service.js +698 -0
- package/dist/users/service.js.map +1 -0
- package/dist/users/types.d.ts +220 -0
- package/dist/users/types.d.ts.map +1 -0
- package/dist/users/types.js +77 -0
- package/dist/users/types.js.map +1 -0
- package/locales/default/en/common.json +10 -0
- package/locales/default/en/consent.json +13 -0
- package/locales/default/en/emails.json +17 -0
- package/locales/default/en/errors.json +21 -0
- package/locales/default/en/forgot-password.json +11 -0
- package/locales/default/en/invitation.json +18 -0
- package/locales/default/en/login.json +17 -0
- package/locales/default/en/logout.json +9 -0
- package/locales/default/en/magic-link.json +12 -0
- package/locales/default/en/reset-password.json +16 -0
- package/locales/default/en/two-factor.json +29 -0
- package/migrations/.gitkeep +0 -0
- package/migrations/001_extensions.sql +22 -0
- package/migrations/002_organizations.sql +43 -0
- package/migrations/003_applications.sql +50 -0
- package/migrations/004_clients.sql +74 -0
- package/migrations/005_users.sql +119 -0
- package/migrations/006_roles_permissions.sql +80 -0
- package/migrations/007_custom_claims.sql +55 -0
- package/migrations/008_config.sql +51 -0
- package/migrations/009_audit_log.sql +31 -0
- package/migrations/010_oidc_adapter.sql +34 -0
- package/migrations/011_seed.sql +53 -0
- package/migrations/012_two_factor.sql +88 -0
- package/migrations/013_client_secret_sha256.sql +22 -0
- package/migrations/014_login_methods.sql +34 -0
- package/migrations/015_signing_key_encryption.sql +20 -0
- package/migrations/016_failed_login_count.sql +27 -0
- package/migrations/017_audit_retention.sql +11 -0
- package/migrations/018_admin_api_enhancements.sql +78 -0
- package/migrations/019_invitation_details.sql +27 -0
- package/migrations/020_two_factor_admin_permission.sql +108 -0
- package/migrations/021_auth_recovery_jobs.sql +74 -0
- package/migrations/022_recovery_artifact_ownership.sql +25 -0
- package/migrations/023_magic_link_authority.sql +39 -0
- package/package.json +106 -0
- package/templates/default/emails/invitation.hbs +39 -0
- package/templates/default/emails/invitation.txt.hbs +18 -0
- package/templates/default/emails/magic-link.hbs +30 -0
- package/templates/default/emails/magic-link.txt.hbs +11 -0
- package/templates/default/emails/otp-code.hbs +31 -0
- package/templates/default/emails/otp-code.txt.hbs +15 -0
- package/templates/default/emails/password-changed.hbs +24 -0
- package/templates/default/emails/password-changed.txt.hbs +7 -0
- package/templates/default/emails/password-reset.hbs +30 -0
- package/templates/default/emails/password-reset.txt.hbs +11 -0
- package/templates/default/emails/welcome.hbs +25 -0
- package/templates/default/emails/welcome.txt.hbs +9 -0
- package/templates/default/layouts/main.hbs +49 -0
- package/templates/default/pages/accept-invite.hbs +25 -0
- package/templates/default/pages/consent.hbs +27 -0
- package/templates/default/pages/error.hbs +15 -0
- package/templates/default/pages/forgot-password.hbs +21 -0
- package/templates/default/pages/invite-expired.hbs +6 -0
- package/templates/default/pages/invite-success.hbs +9 -0
- package/templates/default/pages/login.hbs +108 -0
- package/templates/default/pages/logout-success.hbs +5 -0
- package/templates/default/pages/logout.hbs +24 -0
- package/templates/default/pages/magic-link-sent.hbs +10 -0
- package/templates/default/pages/magic-link-success.hbs +17 -0
- package/templates/default/pages/reset-password.hbs +20 -0
- package/templates/default/pages/reset-success.hbs +9 -0
- package/templates/default/pages/two-factor-setup.hbs +65 -0
- package/templates/default/pages/two-factor-verify.hbs +77 -0
- package/templates/default/partials/flash-messages.hbs +10 -0
- package/templates/default/partials/footer.hbs +4 -0
- package/templates/default/partials/header.hbs +8 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI migration commands.
|
|
3
|
+
*
|
|
4
|
+
* Manages database schema migrations using the existing migrator module
|
|
5
|
+
* (node-pg-migrate). Provides up, down, and status subcommands.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* porta migrate up # Apply all pending migrations
|
|
9
|
+
* porta migrate down # Rollback last migration
|
|
10
|
+
* porta migrate down --count 3 # Rollback last 3 migrations
|
|
11
|
+
* porta migrate status # Show migration status
|
|
12
|
+
*
|
|
13
|
+
* @module cli/commands/migrate
|
|
14
|
+
*/
|
|
15
|
+
import { withBootstrap } from '../bootstrap.js';
|
|
16
|
+
import { withErrorHandling } from '../error-handler.js';
|
|
17
|
+
import { success, warn } from '../output.js';
|
|
18
|
+
/** The migrate command module — registered at the top level of the CLI */
|
|
19
|
+
export const migrateCommand = {
|
|
20
|
+
command: 'migrate',
|
|
21
|
+
describe: 'Manage database migrations',
|
|
22
|
+
builder: (yargs) => {
|
|
23
|
+
return yargs
|
|
24
|
+
.command('up', 'Apply all pending migrations', {}, async (argv) => {
|
|
25
|
+
const args = argv;
|
|
26
|
+
await withErrorHandling(async () => {
|
|
27
|
+
await withBootstrap(args, async () => {
|
|
28
|
+
// Dynamic import to delay config loading until after env overrides
|
|
29
|
+
const { runMigrations } = await import('../../lib/migrator.js');
|
|
30
|
+
if (args['dry-run']) {
|
|
31
|
+
warn('Dry run — no migrations applied');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
await runMigrations('up');
|
|
35
|
+
success('All migrations applied');
|
|
36
|
+
});
|
|
37
|
+
}, args.verbose);
|
|
38
|
+
})
|
|
39
|
+
.command('down', 'Rollback migrations', (y) => y.option('count', {
|
|
40
|
+
type: 'number',
|
|
41
|
+
default: 1,
|
|
42
|
+
description: 'Number of migrations to rollback',
|
|
43
|
+
}), async (argv) => {
|
|
44
|
+
const args = argv;
|
|
45
|
+
await withErrorHandling(async () => {
|
|
46
|
+
await withBootstrap(args, async () => {
|
|
47
|
+
const { runMigrations } = await import('../../lib/migrator.js');
|
|
48
|
+
if (args['dry-run']) {
|
|
49
|
+
warn(`Dry run — would rollback ${args.count} migration(s)`);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
await runMigrations('down', args.count);
|
|
53
|
+
success(`Rolled back ${args.count} migration(s)`);
|
|
54
|
+
});
|
|
55
|
+
}, args.verbose);
|
|
56
|
+
})
|
|
57
|
+
.command('status', 'Show migration status', {}, async (argv) => {
|
|
58
|
+
const args = argv;
|
|
59
|
+
await withErrorHandling(async () => {
|
|
60
|
+
await withBootstrap(args, async () => {
|
|
61
|
+
// Query the pgmigrations table directly to show applied migrations
|
|
62
|
+
const { getPool } = await import('../../lib/database.js');
|
|
63
|
+
const result = await getPool().query('SELECT id, name, run_on FROM pgmigrations ORDER BY id');
|
|
64
|
+
if (result.rows.length === 0) {
|
|
65
|
+
warn('No migrations have been applied');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Dynamic import for output helpers (keeps top-level imports clean)
|
|
69
|
+
const { printTable, outputResult, formatDate, printTotal } = await import('../output.js');
|
|
70
|
+
outputResult(args.json, () => {
|
|
71
|
+
const rows = result.rows.map((r) => [
|
|
72
|
+
String(r.id),
|
|
73
|
+
r.name,
|
|
74
|
+
formatDate(r.run_on),
|
|
75
|
+
]);
|
|
76
|
+
printTable(['ID', 'Name', 'Applied'], rows);
|
|
77
|
+
printTotal('migrations applied', result.rows.length);
|
|
78
|
+
}, result.rows);
|
|
79
|
+
});
|
|
80
|
+
}, args.verbose);
|
|
81
|
+
})
|
|
82
|
+
.demandCommand(1, 'Specify a migrate subcommand: up, down, status');
|
|
83
|
+
},
|
|
84
|
+
handler: () => {
|
|
85
|
+
// No-op — subcommands handle execution
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI seed command.
|
|
3
|
+
*
|
|
4
|
+
* Runs seed data for development environments by executing the seed SQL file
|
|
5
|
+
* (migrations/011_seed.sql) against the database. Requires confirmation
|
|
6
|
+
* to prevent accidental execution in production.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* porta seed run # Run with confirmation prompt
|
|
10
|
+
* porta seed run --force # Skip confirmation
|
|
11
|
+
* porta seed run --dry-run # Preview without executing
|
|
12
|
+
*
|
|
13
|
+
* @module cli/commands/seed
|
|
14
|
+
*/
|
|
15
|
+
import type { CommandModule } from 'yargs';
|
|
16
|
+
import type { GlobalOptions } from '../index.js';
|
|
17
|
+
/** The seed command module — registered at the top level of the CLI */
|
|
18
|
+
export declare const seedCommand: CommandModule<GlobalOptions, GlobalOptions>;
|
|
19
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqBjD,uEAAuE;AACvE,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAgDnE,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI seed command.
|
|
3
|
+
*
|
|
4
|
+
* Runs seed data for development environments by executing the seed SQL file
|
|
5
|
+
* (migrations/011_seed.sql) against the database. Requires confirmation
|
|
6
|
+
* to prevent accidental execution in production.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* porta seed run # Run with confirmation prompt
|
|
10
|
+
* porta seed run --force # Skip confirmation
|
|
11
|
+
* porta seed run --dry-run # Preview without executing
|
|
12
|
+
*
|
|
13
|
+
* @module cli/commands/seed
|
|
14
|
+
*/
|
|
15
|
+
import { readFile } from 'node:fs/promises';
|
|
16
|
+
import { getSeedSqlPath } from '../../lib/runtime-paths.js';
|
|
17
|
+
import { withBootstrap } from '../bootstrap.js';
|
|
18
|
+
import { withErrorHandling } from '../error-handler.js';
|
|
19
|
+
import { success, warn } from '../output.js';
|
|
20
|
+
import { confirm } from '../prompt.js';
|
|
21
|
+
/** Absolute path to the seed SQL file shipped with the server package. */
|
|
22
|
+
const SEED_FILE = getSeedSqlPath();
|
|
23
|
+
/**
|
|
24
|
+
* Extract the "Up Migration" portion from the seed SQL file.
|
|
25
|
+
* The file contains both up and down sections separated by "-- Down Migration".
|
|
26
|
+
* We only want the up section when seeding.
|
|
27
|
+
*/
|
|
28
|
+
function extractUpMigration(sql) {
|
|
29
|
+
const downMarker = '-- Down Migration';
|
|
30
|
+
const downIndex = sql.indexOf(downMarker);
|
|
31
|
+
// If there's a down section, take only the part before it
|
|
32
|
+
return downIndex >= 0 ? sql.substring(0, downIndex).trim() : sql.trim();
|
|
33
|
+
}
|
|
34
|
+
/** The seed command module — registered at the top level of the CLI */
|
|
35
|
+
export const seedCommand = {
|
|
36
|
+
command: 'seed',
|
|
37
|
+
describe: 'Manage seed data',
|
|
38
|
+
builder: (yargs) => {
|
|
39
|
+
return yargs.command('run', 'Insert development seed data', {}, async (argv) => {
|
|
40
|
+
const args = argv;
|
|
41
|
+
await withErrorHandling(async () => {
|
|
42
|
+
// Warn if running in production
|
|
43
|
+
if (process.env.NODE_ENV === 'production') {
|
|
44
|
+
warn('Running seed in production environment!');
|
|
45
|
+
}
|
|
46
|
+
if (args['dry-run']) {
|
|
47
|
+
warn('Dry run — would execute seed SQL from migrations/011_seed.sql');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Require confirmation unless --force is set
|
|
51
|
+
const confirmed = await confirm('This will insert seed data into the database. Continue?', args.force);
|
|
52
|
+
if (!confirmed) {
|
|
53
|
+
warn('Seed operation cancelled');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
await withBootstrap(args, async () => {
|
|
57
|
+
const { getPool } = await import('../../lib/database.js');
|
|
58
|
+
// Read and extract the up portion of the seed SQL
|
|
59
|
+
const rawSql = await readFile(SEED_FILE, 'utf-8');
|
|
60
|
+
const upSql = extractUpMigration(rawSql);
|
|
61
|
+
await getPool().query(upSql);
|
|
62
|
+
success('Seed data inserted successfully');
|
|
63
|
+
});
|
|
64
|
+
}, args.verbose);
|
|
65
|
+
}).demandCommand(1, 'Specify a seed subcommand: run');
|
|
66
|
+
},
|
|
67
|
+
handler: () => {
|
|
68
|
+
// No-op — subcommands handle execution
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,0EAA0E;AAC1E,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;AAEnC;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,UAAU,GAAG,mBAAmB,CAAC;IACvC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,0DAA0D;IAC1D,OAAO,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAgD;IACtE,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK,CAAC,OAAO,CAClB,KAAK,EACL,8BAA8B,EAC9B,EAAE,EACF,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,IAAgC,CAAC;YAC9C,MAAM,iBAAiB,CAAC,KAAK,IAAI,EAAE;gBACjC,gCAAgC;gBAChC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;oBAC1C,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBAClD,CAAC;gBAED,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,+DAA+D,CAAC,CAAC;oBACtE,OAAO;gBACT,CAAC;gBAED,6CAA6C;gBAC7C,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,yDAAyD,EACzD,IAAI,CAAC,KAAK,CACX,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBACjC,OAAO;gBACT,CAAC;gBAED,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;oBACnC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAE1D,kDAAkD;oBAClD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBAEzC,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC7B,OAAO,CAAC,iCAAiC,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACL,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,CACF,CAAC,aAAa,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE;QACZ,uCAAuC;IACzC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI user 2FA subcommands — direct-DB mode only.
|
|
3
|
+
*
|
|
4
|
+
* Manages two-factor authentication for users — status, disable, reset.
|
|
5
|
+
* Uses direct database access via withBootstrap.
|
|
6
|
+
*
|
|
7
|
+
* HTTP-based 2FA management is available in the standalone
|
|
8
|
+
* `@portaidentity/cli` package via the `user` command.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* porta user 2fa status <user-id>
|
|
12
|
+
* porta user 2fa disable <user-id> [--force]
|
|
13
|
+
* porta user 2fa reset <user-id> [--force]
|
|
14
|
+
*
|
|
15
|
+
* @module cli/commands/user-2fa
|
|
16
|
+
*/
|
|
17
|
+
import type { CommandModule } from 'yargs';
|
|
18
|
+
import type { GlobalOptions } from '../index.js';
|
|
19
|
+
/** The user 2fa subcommand group — registered as `user` in the reduced CLI */
|
|
20
|
+
export declare const userTwoFaCommand: CommandModule<GlobalOptions, GlobalOptions>;
|
|
21
|
+
/**
|
|
22
|
+
* The `user` command for the reduced server CLI.
|
|
23
|
+
*
|
|
24
|
+
* In the Docker-embedded CLI, the only `user` subcommand is `2fa`
|
|
25
|
+
* for direct-DB two-factor administration. All other user management
|
|
26
|
+
* (CRUD, status, roles, claims) is in `@portaidentity/cli`.
|
|
27
|
+
*/
|
|
28
|
+
export declare const userCommand: CommandModule<GlobalOptions, GlobalOptions>;
|
|
29
|
+
//# sourceMappingURL=user-2fa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-2fa.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/user-2fa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmBjD,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CA0GxE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAWnE,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI user 2FA subcommands — direct-DB mode only.
|
|
3
|
+
*
|
|
4
|
+
* Manages two-factor authentication for users — status, disable, reset.
|
|
5
|
+
* Uses direct database access via withBootstrap.
|
|
6
|
+
*
|
|
7
|
+
* HTTP-based 2FA management is available in the standalone
|
|
8
|
+
* `@portaidentity/cli` package via the `user` command.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* porta user 2fa status <user-id>
|
|
12
|
+
* porta user 2fa disable <user-id> [--force]
|
|
13
|
+
* porta user 2fa reset <user-id> [--force]
|
|
14
|
+
*
|
|
15
|
+
* @module cli/commands/user-2fa
|
|
16
|
+
*/
|
|
17
|
+
import { withBootstrap } from '../bootstrap.js';
|
|
18
|
+
import { withErrorHandling } from '../error-handler.js';
|
|
19
|
+
import { printTable, success, warn, outputResult, truncateId } from '../output.js';
|
|
20
|
+
import { confirm } from '../prompt.js';
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Command definition
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/** The user 2fa subcommand group — registered as `user` in the reduced CLI */
|
|
25
|
+
export const userTwoFaCommand = {
|
|
26
|
+
command: '2fa',
|
|
27
|
+
describe: 'Manage user two-factor authentication (direct-DB)',
|
|
28
|
+
builder: (yargs) => {
|
|
29
|
+
return yargs
|
|
30
|
+
// ── status ──────────────────────────────────────────────────────
|
|
31
|
+
.command('status <id>', 'Check 2FA status for a user', (y) => y.positional('id', { type: 'string', demandOption: true, description: 'User UUID' }), async (argv) => {
|
|
32
|
+
const args = argv;
|
|
33
|
+
await withErrorHandling(async () => {
|
|
34
|
+
await withBootstrap(args, async () => {
|
|
35
|
+
const { getTwoFactorStatus } = await import('../../two-factor/service.js');
|
|
36
|
+
const { findUserById } = await import('../../users/repository.js');
|
|
37
|
+
const user = await findUserById(args.id);
|
|
38
|
+
if (!user) {
|
|
39
|
+
warn(`User ${args.id} not found`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const status = await getTwoFactorStatus(args.id);
|
|
43
|
+
outputResult(args.json, () => {
|
|
44
|
+
printTable(['Field', 'Value'], [
|
|
45
|
+
['User ID', truncateId(args.id)],
|
|
46
|
+
['Email', user.email],
|
|
47
|
+
['2FA Enabled', status.enabled ? '✅ Yes' : '❌ No'],
|
|
48
|
+
['Method', status.method ?? '—'],
|
|
49
|
+
['TOTP Configured', status.totpConfigured ? '✅ Yes' : '❌ No'],
|
|
50
|
+
['Recovery Codes', String(status.recoveryCodesRemaining ?? 0)],
|
|
51
|
+
]);
|
|
52
|
+
}, { userId: args.id, email: user.email, ...status });
|
|
53
|
+
});
|
|
54
|
+
}, args.verbose);
|
|
55
|
+
})
|
|
56
|
+
// ── disable ─────────────────────────────────────────────────────
|
|
57
|
+
.command('disable <id>', 'Disable 2FA for a user (removes TOTP config, OTP codes, and recovery codes)', (y) => y.positional('id', { type: 'string', demandOption: true, description: 'User UUID' }), async (argv) => {
|
|
58
|
+
const args = argv;
|
|
59
|
+
await withErrorHandling(async () => {
|
|
60
|
+
const confirmed = await confirm(`Disable 2FA for user ${args.id}? This will remove all 2FA configuration.`, args.force);
|
|
61
|
+
if (!confirmed) {
|
|
62
|
+
warn('Operation cancelled');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
await withBootstrap(args, async () => {
|
|
66
|
+
const { disableTwoFactor } = await import('../../two-factor/service.js');
|
|
67
|
+
await disableTwoFactor(args.id);
|
|
68
|
+
success(`2FA disabled for user ${truncateId(args.id)}`);
|
|
69
|
+
});
|
|
70
|
+
}, args.verbose);
|
|
71
|
+
})
|
|
72
|
+
// ── reset ───────────────────────────────────────────────────────
|
|
73
|
+
.command('reset <id>', 'Reset 2FA for a user (disable + clear all 2FA data, user must re-enroll)', (y) => y.positional('id', { type: 'string', demandOption: true, description: 'User UUID' }), async (argv) => {
|
|
74
|
+
const args = argv;
|
|
75
|
+
await withErrorHandling(async () => {
|
|
76
|
+
const confirmed = await confirm(`Reset 2FA for user ${args.id}? This will completely remove all 2FA data and the user will need to re-enroll.`, args.force);
|
|
77
|
+
if (!confirmed) {
|
|
78
|
+
warn('Operation cancelled');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
await withBootstrap(args, async () => {
|
|
82
|
+
const { disableTwoFactor } = await import('../../two-factor/service.js');
|
|
83
|
+
await disableTwoFactor(args.id);
|
|
84
|
+
success(`2FA reset for user ${truncateId(args.id)} — user must re-enroll`);
|
|
85
|
+
});
|
|
86
|
+
}, args.verbose);
|
|
87
|
+
})
|
|
88
|
+
.demandCommand(1, 'Specify a 2fa subcommand: status, disable, reset');
|
|
89
|
+
},
|
|
90
|
+
handler: () => {
|
|
91
|
+
// No-op — subcommands handle execution
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* The `user` command for the reduced server CLI.
|
|
96
|
+
*
|
|
97
|
+
* In the Docker-embedded CLI, the only `user` subcommand is `2fa`
|
|
98
|
+
* for direct-DB two-factor administration. All other user management
|
|
99
|
+
* (CRUD, status, roles, claims) is in `@portaidentity/cli`.
|
|
100
|
+
*/
|
|
101
|
+
export const userCommand = {
|
|
102
|
+
command: 'user',
|
|
103
|
+
describe: 'User administration (2FA only, direct-DB)',
|
|
104
|
+
builder: (yargs) => {
|
|
105
|
+
return yargs
|
|
106
|
+
.command(userTwoFaCommand)
|
|
107
|
+
.demandCommand(1, 'Specify a user subcommand: 2fa');
|
|
108
|
+
},
|
|
109
|
+
handler: () => {
|
|
110
|
+
// No-op — subcommands handle execution
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=user-2fa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-2fa.js","sourceRoot":"","sources":["../../../src/cli/commands/user-2fa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI error handler — infrastructure commands only.
|
|
3
|
+
*
|
|
4
|
+
* Wraps command handlers to catch domain errors, displaying
|
|
5
|
+
* user-friendly messages with appropriate exit codes.
|
|
6
|
+
*
|
|
7
|
+
* Domain error detection uses constructor name suffix matching so all
|
|
8
|
+
* domain modules (organizations, applications, clients, users, RBAC,
|
|
9
|
+
* custom claims) are handled without importing every error class.
|
|
10
|
+
*
|
|
11
|
+
* Exit codes:
|
|
12
|
+
* 0 — success (set by withErrorHandling on normal completion)
|
|
13
|
+
* 1 — any error (domain error, unexpected error)
|
|
14
|
+
*
|
|
15
|
+
* @module cli/error-handler
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Wrap a command handler with error handling.
|
|
19
|
+
*
|
|
20
|
+
* Catches known domain errors and displays formatted messages.
|
|
21
|
+
* Unknown errors show a generic message. Verbose mode (--verbose)
|
|
22
|
+
* additionally prints the full stack trace to stderr.
|
|
23
|
+
*
|
|
24
|
+
* Always calls process.exit() — exit(0) on success, exit(1) on error.
|
|
25
|
+
* This ensures the CLI process terminates cleanly after each command.
|
|
26
|
+
*
|
|
27
|
+
* @param fn - The async command handler to execute
|
|
28
|
+
* @param verbose - Whether to show stack traces (from argv.verbose)
|
|
29
|
+
*/
|
|
30
|
+
export declare function withErrorHandling(fn: () => Promise<void>, verbose?: boolean): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=error-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/cli/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACvB,OAAO,UAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI error handler — infrastructure commands only.
|
|
3
|
+
*
|
|
4
|
+
* Wraps command handlers to catch domain errors, displaying
|
|
5
|
+
* user-friendly messages with appropriate exit codes.
|
|
6
|
+
*
|
|
7
|
+
* Domain error detection uses constructor name suffix matching so all
|
|
8
|
+
* domain modules (organizations, applications, clients, users, RBAC,
|
|
9
|
+
* custom claims) are handled without importing every error class.
|
|
10
|
+
*
|
|
11
|
+
* Exit codes:
|
|
12
|
+
* 0 — success (set by withErrorHandling on normal completion)
|
|
13
|
+
* 1 — any error (domain error, unexpected error)
|
|
14
|
+
*
|
|
15
|
+
* @module cli/error-handler
|
|
16
|
+
*/
|
|
17
|
+
import { error } from './output.js';
|
|
18
|
+
/**
|
|
19
|
+
* Wrap a command handler with error handling.
|
|
20
|
+
*
|
|
21
|
+
* Catches known domain errors and displays formatted messages.
|
|
22
|
+
* Unknown errors show a generic message. Verbose mode (--verbose)
|
|
23
|
+
* additionally prints the full stack trace to stderr.
|
|
24
|
+
*
|
|
25
|
+
* Always calls process.exit() — exit(0) on success, exit(1) on error.
|
|
26
|
+
* This ensures the CLI process terminates cleanly after each command.
|
|
27
|
+
*
|
|
28
|
+
* @param fn - The async command handler to execute
|
|
29
|
+
* @param verbose - Whether to show stack traces (from argv.verbose)
|
|
30
|
+
*/
|
|
31
|
+
export async function withErrorHandling(fn, verbose = false) {
|
|
32
|
+
try {
|
|
33
|
+
await fn();
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
if (err instanceof Error) {
|
|
38
|
+
// ---------------------------------------------------------------
|
|
39
|
+
// Domain errors (from direct-DB commands like init/migrate)
|
|
40
|
+
// Detected by constructor name suffix to avoid importing every
|
|
41
|
+
// error class. All domain modules follow the naming convention:
|
|
42
|
+
// <Entity>NotFoundError, <Entity>ValidationError.
|
|
43
|
+
// ---------------------------------------------------------------
|
|
44
|
+
const name = err.constructor.name;
|
|
45
|
+
if (name.endsWith('NotFoundError')) {
|
|
46
|
+
error(`Not found: ${err.message}`);
|
|
47
|
+
}
|
|
48
|
+
else if (name.endsWith('ValidationError')) {
|
|
49
|
+
error(`Validation error: ${err.message}`);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
error(`Error: ${err.message}`);
|
|
53
|
+
}
|
|
54
|
+
// In verbose mode, print full stack trace to stderr for debugging
|
|
55
|
+
if (verbose && err.stack) {
|
|
56
|
+
console.error('\n' + err.stack);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
error('An unexpected error occurred');
|
|
61
|
+
}
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/cli/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAuB,EACvB,OAAO,GAAG,KAAK;IAEf,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,kEAAkE;YAClE,4DAA4D;YAC5D,+DAA+D;YAC/D,gEAAgE;YAChE,kDAAkD;YAClD,kEAAkE;YAClE,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,KAAK,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACjC,CAAC;YAED,kEAAkE;YAClE,IAAI,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Porta server CLI entry point — infrastructure commands only.
|
|
4
|
+
*
|
|
5
|
+
* This is the reduced server-embedded CLI that ships inside the Docker image.
|
|
6
|
+
* It provides only direct-DB commands that need to run before or without
|
|
7
|
+
* the HTTP server (bootstrap, migrations, seed, health check, 2FA admin).
|
|
8
|
+
*
|
|
9
|
+
* All HTTP-based admin commands (org, app, client, user, keys, config,
|
|
10
|
+
* audit, sessions, stats, bulk, exports, provision) have been extracted
|
|
11
|
+
* to the standalone `@portaidentity/cli` package.
|
|
12
|
+
*
|
|
13
|
+
* Usage: porta <command> <subcommand> [options]
|
|
14
|
+
*
|
|
15
|
+
* Commands:
|
|
16
|
+
* init Bootstrap admin infrastructure (first-time setup)
|
|
17
|
+
* migrate Run database migrations (up/down/status)
|
|
18
|
+
* seed Load development seed data
|
|
19
|
+
* health Check server health (--direct mode, DB + Redis)
|
|
20
|
+
* user 2FA admin commands (status/disable/reset --direct)
|
|
21
|
+
*
|
|
22
|
+
* Global options:
|
|
23
|
+
* --json Output in JSON format (default: table)
|
|
24
|
+
* --verbose Show detailed output including stack traces on error
|
|
25
|
+
* --force Skip confirmation prompts for destructive operations
|
|
26
|
+
* --dry-run Preview destructive operations without executing
|
|
27
|
+
* --database-url Override DATABASE_URL from .env
|
|
28
|
+
* --redis-url Override REDIS_URL from .env
|
|
29
|
+
*/
|
|
30
|
+
import { type Argv } from 'yargs';
|
|
31
|
+
/** Global option types shared by all commands */
|
|
32
|
+
export interface GlobalOptions {
|
|
33
|
+
json: boolean;
|
|
34
|
+
verbose: boolean;
|
|
35
|
+
force: boolean;
|
|
36
|
+
'dry-run': boolean;
|
|
37
|
+
'database-url'?: string;
|
|
38
|
+
'redis-url'?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build and configure the CLI application.
|
|
42
|
+
*
|
|
43
|
+
* Creates a yargs instance with all global options and command registrations.
|
|
44
|
+
* Separated from execution for testability — the entry point calls buildCli()
|
|
45
|
+
* then .parse(), while tests can inspect the builder without executing.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildCli(argv?: string[]): Argv<GlobalOptions>;
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAc,EAAE,KAAK,IAAI,EAAE,MAAM,OAAO,CAAC;AAQzC,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAmD7D"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Porta server CLI entry point — infrastructure commands only.
|
|
4
|
+
*
|
|
5
|
+
* This is the reduced server-embedded CLI that ships inside the Docker image.
|
|
6
|
+
* It provides only direct-DB commands that need to run before or without
|
|
7
|
+
* the HTTP server (bootstrap, migrations, seed, health check, 2FA admin).
|
|
8
|
+
*
|
|
9
|
+
* All HTTP-based admin commands (org, app, client, user, keys, config,
|
|
10
|
+
* audit, sessions, stats, bulk, exports, provision) have been extracted
|
|
11
|
+
* to the standalone `@portaidentity/cli` package.
|
|
12
|
+
*
|
|
13
|
+
* Usage: porta <command> <subcommand> [options]
|
|
14
|
+
*
|
|
15
|
+
* Commands:
|
|
16
|
+
* init Bootstrap admin infrastructure (first-time setup)
|
|
17
|
+
* migrate Run database migrations (up/down/status)
|
|
18
|
+
* seed Load development seed data
|
|
19
|
+
* health Check server health (--direct mode, DB + Redis)
|
|
20
|
+
* user 2FA admin commands (status/disable/reset --direct)
|
|
21
|
+
*
|
|
22
|
+
* Global options:
|
|
23
|
+
* --json Output in JSON format (default: table)
|
|
24
|
+
* --verbose Show detailed output including stack traces on error
|
|
25
|
+
* --force Skip confirmation prompts for destructive operations
|
|
26
|
+
* --dry-run Preview destructive operations without executing
|
|
27
|
+
* --database-url Override DATABASE_URL from .env
|
|
28
|
+
* --redis-url Override REDIS_URL from .env
|
|
29
|
+
*/
|
|
30
|
+
import yargs from 'yargs';
|
|
31
|
+
import { hideBin } from 'yargs/helpers';
|
|
32
|
+
import { initCommand } from './commands/init.js';
|
|
33
|
+
import { migrateCommand } from './commands/migrate.js';
|
|
34
|
+
import { seedCommand } from './commands/seed.js';
|
|
35
|
+
import { healthCommand } from './commands/health.js';
|
|
36
|
+
import { userCommand } from './commands/user-2fa.js';
|
|
37
|
+
/**
|
|
38
|
+
* Build and configure the CLI application.
|
|
39
|
+
*
|
|
40
|
+
* Creates a yargs instance with all global options and command registrations.
|
|
41
|
+
* Separated from execution for testability — the entry point calls buildCli()
|
|
42
|
+
* then .parse(), while tests can inspect the builder without executing.
|
|
43
|
+
*/
|
|
44
|
+
export function buildCli(argv) {
|
|
45
|
+
const args = argv ?? hideBin(process.argv);
|
|
46
|
+
const cli = yargs(args)
|
|
47
|
+
.scriptName('porta')
|
|
48
|
+
.usage('$0 <command> [options]')
|
|
49
|
+
// Global options available to all commands
|
|
50
|
+
.option('json', {
|
|
51
|
+
type: 'boolean',
|
|
52
|
+
default: false,
|
|
53
|
+
description: 'Output in JSON format',
|
|
54
|
+
})
|
|
55
|
+
.option('verbose', {
|
|
56
|
+
type: 'boolean',
|
|
57
|
+
default: false,
|
|
58
|
+
description: 'Verbose output',
|
|
59
|
+
})
|
|
60
|
+
.option('force', {
|
|
61
|
+
type: 'boolean',
|
|
62
|
+
default: false,
|
|
63
|
+
description: 'Skip confirmation prompts',
|
|
64
|
+
})
|
|
65
|
+
.option('dry-run', {
|
|
66
|
+
type: 'boolean',
|
|
67
|
+
default: false,
|
|
68
|
+
description: 'Preview destructive operations',
|
|
69
|
+
})
|
|
70
|
+
.option('database-url', {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: 'PostgreSQL connection URL override',
|
|
73
|
+
})
|
|
74
|
+
.option('redis-url', {
|
|
75
|
+
type: 'string',
|
|
76
|
+
description: 'Redis connection URL override',
|
|
77
|
+
})
|
|
78
|
+
// Infrastructure commands (direct-DB only)
|
|
79
|
+
.command(initCommand)
|
|
80
|
+
.command(migrateCommand)
|
|
81
|
+
.command(seedCommand)
|
|
82
|
+
.command(healthCommand)
|
|
83
|
+
.command(userCommand)
|
|
84
|
+
.demandCommand(1, 'You need to specify a command')
|
|
85
|
+
.strict()
|
|
86
|
+
.help()
|
|
87
|
+
.version()
|
|
88
|
+
.epilogue('For full admin CLI (org, app, client, user, etc.), install @portaidentity/cli')
|
|
89
|
+
.wrap(Math.min(120, process.stdout.columns ?? 80));
|
|
90
|
+
return cli;
|
|
91
|
+
}
|
|
92
|
+
// Only execute when run directly (not when imported for testing)
|
|
93
|
+
// Node ESM doesn't have require.main, so we check if the file is the entry point
|
|
94
|
+
// by looking at process.argv — tsx and node both set argv[1] to the executed file
|
|
95
|
+
const isDirectExecution = process.argv[1]?.includes('cli/index') || process.argv[1]?.endsWith('porta');
|
|
96
|
+
if (isDirectExecution) {
|
|
97
|
+
await buildCli().parse();
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAYrD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAe;IACtC,MAAM,IAAI,GAAG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SACpB,UAAU,CAAC,OAAO,CAAC;SACnB,KAAK,CAAC,wBAAwB,CAAC;QAChC,2CAA2C;SAC1C,MAAM,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,uBAAuB;KACrC,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,gBAAgB;KAC9B,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,2BAA2B;KACzC,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,gCAAgC;KAC9C,CAAC;SACD,MAAM,CAAC,cAAc,EAAE;QACtB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oCAAoC;KAClD,CAAC;SACD,MAAM,CAAC,WAAW,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+BAA+B;KAC7C,CAAC;QACF,2CAA2C;SAC1C,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,aAAa,CAAC,CAAC,EAAE,+BAA+B,CAAC;SACjD,MAAM,EAAE;SACR,IAAI,EAAE;SACN,OAAO,EAAE;SACT,QAAQ,CACP,+EAA+E,CAChF;SACA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAErD,OAAO,GAA0B,CAAC;AACpC,CAAC;AAED,iEAAiE;AACjE,iFAAiF;AACjF,kFAAkF;AAClF,MAAM,iBAAiB,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE/E,IAAI,iBAAiB,EAAE,CAAC;IACtB,MAAM,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC"}
|