@hilbras/keystone 1.1.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 +53 -0
- package/LICENSE +21 -0
- package/README.md +691 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +144 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +68 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +118 -0
- package/dist/config.js.map +1 -0
- package/dist/container.d.ts +27 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +14 -0
- package/dist/container.js.map +1 -0
- package/dist/db/index.d.ts +17 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +46 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations/0000_skinny_ben_parker.sql +553 -0
- package/dist/db/migrations/0001_brief_joseph.sql +10 -0
- package/dist/db/migrations/0002_add_account_lockout.sql +3 -0
- package/dist/db/migrations/0003_steep_rachel_grey.sql +1 -0
- package/dist/db/migrations/0004_clever_bill_hollister.sql +20 -0
- package/dist/db/migrations/0005_steep_the_call.sql +2 -0
- package/dist/db/migrations/0006_ambitious_boomer.sql +17 -0
- package/dist/db/migrations/0007_greedy_vindicator.sql +40 -0
- package/dist/db/migrations/meta/0000_snapshot.json +2964 -0
- package/dist/db/migrations/meta/0001_snapshot.json +3031 -0
- package/dist/db/migrations/meta/0003_snapshot.json +3051 -0
- package/dist/db/migrations/meta/0004_snapshot.json +3163 -0
- package/dist/db/migrations/meta/0005_snapshot.json +3177 -0
- package/dist/db/migrations/meta/0006_snapshot.json +3270 -0
- package/dist/db/migrations/meta/0007_snapshot.json +3489 -0
- package/dist/db/migrations/meta/_journal.json +62 -0
- package/dist/db/schema.d.ts +3671 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +475 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/seed.d.ts +2 -0
- package/dist/db/seed.d.ts.map +1 -0
- package/dist/db/seed.js +139 -0
- package/dist/db/seed.js.map +1 -0
- package/dist/di.d.ts +12 -0
- package/dist/di.d.ts.map +1 -0
- package/dist/di.js +56 -0
- package/dist/di.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +295 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/errors.d.ts +46 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +78 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/result.d.ts +21 -0
- package/dist/lib/result.d.ts.map +1 -0
- package/dist/lib/result.js +22 -0
- package/dist/lib/result.js.map +1 -0
- package/dist/lib/webhookSignature.d.ts +11 -0
- package/dist/lib/webhookSignature.d.ts.map +1 -0
- package/dist/lib/webhookSignature.js +35 -0
- package/dist/lib/webhookSignature.js.map +1 -0
- package/dist/plugins/appContext.d.ts +4 -0
- package/dist/plugins/appContext.d.ts.map +1 -0
- package/dist/plugins/appContext.js +63 -0
- package/dist/plugins/appContext.js.map +1 -0
- package/dist/plugins/audit.d.ts +11 -0
- package/dist/plugins/audit.d.ts.map +1 -0
- package/dist/plugins/audit.js +23 -0
- package/dist/plugins/audit.js.map +1 -0
- package/dist/plugins/auth.d.ts +21 -0
- package/dist/plugins/auth.d.ts.map +1 -0
- package/dist/plugins/auth.js +190 -0
- package/dist/plugins/auth.js.map +1 -0
- package/dist/plugins/metrics.d.ts +8 -0
- package/dist/plugins/metrics.d.ts.map +1 -0
- package/dist/plugins/metrics.js +36 -0
- package/dist/plugins/metrics.js.map +1 -0
- package/dist/plugins/mtls.d.ts +14 -0
- package/dist/plugins/mtls.d.ts.map +1 -0
- package/dist/plugins/mtls.js +76 -0
- package/dist/plugins/mtls.js.map +1 -0
- package/dist/plugins/permissions.d.ts +9 -0
- package/dist/plugins/permissions.d.ts.map +1 -0
- package/dist/plugins/permissions.js +20 -0
- package/dist/plugins/permissions.js.map +1 -0
- package/dist/plugins/rateLimit.d.ts +20 -0
- package/dist/plugins/rateLimit.d.ts.map +1 -0
- package/dist/plugins/rateLimit.js +101 -0
- package/dist/plugins/rateLimit.js.map +1 -0
- package/dist/plugins/requestLogger.d.ts +4 -0
- package/dist/plugins/requestLogger.d.ts.map +1 -0
- package/dist/plugins/requestLogger.js +20 -0
- package/dist/plugins/requestLogger.js.map +1 -0
- package/dist/plugins/tracing.d.ts +3 -0
- package/dist/plugins/tracing.d.ts.map +1 -0
- package/dist/plugins/tracing.js +21 -0
- package/dist/plugins/tracing.js.map +1 -0
- package/dist/repositories/apiKey.d.ts +40 -0
- package/dist/repositories/apiKey.d.ts.map +1 -0
- package/dist/repositories/apiKey.js +122 -0
- package/dist/repositories/apiKey.js.map +1 -0
- package/dist/repositories/application.d.ts +13 -0
- package/dist/repositories/application.d.ts.map +1 -0
- package/dist/repositories/application.js +57 -0
- package/dist/repositories/application.js.map +1 -0
- package/dist/repositories/audit.d.ts +13 -0
- package/dist/repositories/audit.d.ts.map +1 -0
- package/dist/repositories/audit.js +26 -0
- package/dist/repositories/audit.js.map +1 -0
- package/dist/repositories/index.d.ts +10 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +10 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/oidcConnection.d.ts +131 -0
- package/dist/repositories/oidcConnection.d.ts.map +1 -0
- package/dist/repositories/oidcConnection.js +59 -0
- package/dist/repositories/oidcConnection.js.map +1 -0
- package/dist/repositories/organization.d.ts +44 -0
- package/dist/repositories/organization.d.ts.map +1 -0
- package/dist/repositories/organization.js +145 -0
- package/dist/repositories/organization.js.map +1 -0
- package/dist/repositories/permission.d.ts +24 -0
- package/dist/repositories/permission.d.ts.map +1 -0
- package/dist/repositories/permission.js +133 -0
- package/dist/repositories/permission.js.map +1 -0
- package/dist/repositories/samlConnection.d.ts +107 -0
- package/dist/repositories/samlConnection.d.ts.map +1 -0
- package/dist/repositories/samlConnection.js +53 -0
- package/dist/repositories/samlConnection.js.map +1 -0
- package/dist/repositories/session.d.ts +73 -0
- package/dist/repositories/session.d.ts.map +1 -0
- package/dist/repositories/session.js +68 -0
- package/dist/repositories/session.js.map +1 -0
- package/dist/repositories/types.d.ts +155 -0
- package/dist/repositories/types.d.ts.map +1 -0
- package/dist/repositories/types.js +2 -0
- package/dist/repositories/types.js.map +1 -0
- package/dist/repositories/user.d.ts +40 -0
- package/dist/repositories/user.d.ts.map +1 -0
- package/dist/repositories/user.js +135 -0
- package/dist/repositories/user.js.map +1 -0
- package/dist/routes/admin/billing.d.ts +3 -0
- package/dist/routes/admin/billing.d.ts.map +1 -0
- package/dist/routes/admin/billing.js +31 -0
- package/dist/routes/admin/billing.js.map +1 -0
- package/dist/routes/admin/helpers.d.ts +36 -0
- package/dist/routes/admin/helpers.d.ts.map +1 -0
- package/dist/routes/admin/helpers.js +45 -0
- package/dist/routes/admin/helpers.js.map +1 -0
- package/dist/routes/admin/index.d.ts +3 -0
- package/dist/routes/admin/index.d.ts.map +1 -0
- package/dist/routes/admin/index.js +15 -0
- package/dist/routes/admin/index.js.map +1 -0
- package/dist/routes/admin/organizations.d.ts +3 -0
- package/dist/routes/admin/organizations.d.ts.map +1 -0
- package/dist/routes/admin/organizations.js +222 -0
- package/dist/routes/admin/organizations.js.map +1 -0
- package/dist/routes/admin/permissions.d.ts +3 -0
- package/dist/routes/admin/permissions.d.ts.map +1 -0
- package/dist/routes/admin/permissions.js +63 -0
- package/dist/routes/admin/permissions.js.map +1 -0
- package/dist/routes/admin/platform.d.ts +3 -0
- package/dist/routes/admin/platform.d.ts.map +1 -0
- package/dist/routes/admin/platform.js +294 -0
- package/dist/routes/admin/platform.js.map +1 -0
- package/dist/routes/admin/sso.d.ts +3 -0
- package/dist/routes/admin/sso.d.ts.map +1 -0
- package/dist/routes/admin/sso.js +97 -0
- package/dist/routes/admin/sso.js.map +1 -0
- package/dist/routes/admin/webhooks.d.ts +3 -0
- package/dist/routes/admin/webhooks.d.ts.map +1 -0
- package/dist/routes/admin/webhooks.js +68 -0
- package/dist/routes/admin/webhooks.js.map +1 -0
- package/dist/routes/admin.d.ts +2 -0
- package/dist/routes/admin.d.ts.map +1 -0
- package/dist/routes/admin.js +2 -0
- package/dist/routes/admin.js.map +1 -0
- package/dist/routes/apiKeys.d.ts +3 -0
- package/dist/routes/apiKeys.d.ts.map +1 -0
- package/dist/routes/apiKeys.js +50 -0
- package/dist/routes/apiKeys.js.map +1 -0
- package/dist/routes/auth.d.ts +3 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +174 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/authz.d.ts +3 -0
- package/dist/routes/authz.d.ts.map +1 -0
- package/dist/routes/authz.js +28 -0
- package/dist/routes/authz.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +63 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/emailVerification.d.ts +3 -0
- package/dist/routes/emailVerification.d.ts.map +1 -0
- package/dist/routes/emailVerification.js +64 -0
- package/dist/routes/emailVerification.js.map +1 -0
- package/dist/routes/federation.d.ts +3 -0
- package/dist/routes/federation.d.ts.map +1 -0
- package/dist/routes/federation.js +133 -0
- package/dist/routes/federation.js.map +1 -0
- package/dist/routes/helpers.d.ts +14 -0
- package/dist/routes/helpers.d.ts.map +1 -0
- package/dist/routes/helpers.js +15 -0
- package/dist/routes/helpers.js.map +1 -0
- package/dist/routes/magicLinks.d.ts +3 -0
- package/dist/routes/magicLinks.d.ts.map +1 -0
- package/dist/routes/magicLinks.js +82 -0
- package/dist/routes/magicLinks.js.map +1 -0
- package/dist/routes/oauth.d.ts +3 -0
- package/dist/routes/oauth.d.ts.map +1 -0
- package/dist/routes/oauth.js +146 -0
- package/dist/routes/oauth.js.map +1 -0
- package/dist/routes/oauth2.d.ts +3 -0
- package/dist/routes/oauth2.d.ts.map +1 -0
- package/dist/routes/oauth2.js +219 -0
- package/dist/routes/oauth2.js.map +1 -0
- package/dist/routes/oidcEnterprise.d.ts +3 -0
- package/dist/routes/oidcEnterprise.d.ts.map +1 -0
- package/dist/routes/oidcEnterprise.js +119 -0
- package/dist/routes/oidcEnterprise.js.map +1 -0
- package/dist/routes/password.d.ts +3 -0
- package/dist/routes/password.d.ts.map +1 -0
- package/dist/routes/password.js +83 -0
- package/dist/routes/password.js.map +1 -0
- package/dist/routes/profile.d.ts +3 -0
- package/dist/routes/profile.d.ts.map +1 -0
- package/dist/routes/profile.js +43 -0
- package/dist/routes/profile.js.map +1 -0
- package/dist/routes/saml.d.ts +3 -0
- package/dist/routes/saml.d.ts.map +1 -0
- package/dist/routes/saml.js +164 -0
- package/dist/routes/saml.js.map +1 -0
- package/dist/routes/scim.d.ts +3 -0
- package/dist/routes/scim.d.ts.map +1 -0
- package/dist/routes/scim.js +175 -0
- package/dist/routes/scim.js.map +1 -0
- package/dist/routes/sdk.d.ts +3 -0
- package/dist/routes/sdk.d.ts.map +1 -0
- package/dist/routes/sdk.js +129 -0
- package/dist/routes/sdk.js.map +1 -0
- package/dist/routes/serviceAccounts.d.ts +3 -0
- package/dist/routes/serviceAccounts.d.ts.map +1 -0
- package/dist/routes/serviceAccounts.js +82 -0
- package/dist/routes/serviceAccounts.js.map +1 -0
- package/dist/routes/sessions.d.ts +3 -0
- package/dist/routes/sessions.d.ts.map +1 -0
- package/dist/routes/sessions.js +55 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/routes/setup.d.ts +3 -0
- package/dist/routes/setup.d.ts.map +1 -0
- package/dist/routes/setup.js +304 -0
- package/dist/routes/setup.js.map +1 -0
- package/dist/routes/smsOtp.d.ts +3 -0
- package/dist/routes/smsOtp.d.ts.map +1 -0
- package/dist/routes/smsOtp.js +50 -0
- package/dist/routes/smsOtp.js.map +1 -0
- package/dist/routes/totp.d.ts +3 -0
- package/dist/routes/totp.d.ts.map +1 -0
- package/dist/routes/totp.js +78 -0
- package/dist/routes/totp.js.map +1 -0
- package/dist/routes/webauthn.d.ts +3 -0
- package/dist/routes/webauthn.d.ts.map +1 -0
- package/dist/routes/webauthn.js +100 -0
- package/dist/routes/webauthn.js.map +1 -0
- package/dist/routes/workflows.d.ts +3 -0
- package/dist/routes/workflows.d.ts.map +1 -0
- package/dist/routes/workflows.js +140 -0
- package/dist/routes/workflows.js.map +1 -0
- package/dist/sdk/index.d.ts +5 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +125 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/types.d.ts +110 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/services/anomalyDetection.d.ts +14 -0
- package/dist/services/anomalyDetection.d.ts.map +1 -0
- package/dist/services/anomalyDetection.js +68 -0
- package/dist/services/anomalyDetection.js.map +1 -0
- package/dist/services/application/authentication.d.ts +38 -0
- package/dist/services/application/authentication.d.ts.map +1 -0
- package/dist/services/application/authentication.js +48 -0
- package/dist/services/application/authentication.js.map +1 -0
- package/dist/services/application/identity.d.ts +34 -0
- package/dist/services/application/identity.d.ts.map +1 -0
- package/dist/services/application/identity.js +34 -0
- package/dist/services/application/identity.js.map +1 -0
- package/dist/services/application/index.d.ts +4 -0
- package/dist/services/application/index.d.ts.map +1 -0
- package/dist/services/application/index.js +4 -0
- package/dist/services/application/index.js.map +1 -0
- package/dist/services/application/organization.d.ts +44 -0
- package/dist/services/application/organization.d.ts.map +1 -0
- package/dist/services/application/organization.js +53 -0
- package/dist/services/application/organization.js.map +1 -0
- package/dist/services/applications.d.ts +25 -0
- package/dist/services/applications.d.ts.map +1 -0
- package/dist/services/applications.js +64 -0
- package/dist/services/applications.js.map +1 -0
- package/dist/services/audit.d.ts +16 -0
- package/dist/services/audit.d.ts.map +1 -0
- package/dist/services/audit.js +28 -0
- package/dist/services/audit.js.map +1 -0
- package/dist/services/auditExport.d.ts +17 -0
- package/dist/services/auditExport.d.ts.map +1 -0
- package/dist/services/auditExport.js +37 -0
- package/dist/services/auditExport.js.map +1 -0
- package/dist/services/billing.d.ts +23 -0
- package/dist/services/billing.d.ts.map +1 -0
- package/dist/services/billing.js +67 -0
- package/dist/services/billing.js.map +1 -0
- package/dist/services/cache.d.ts +23 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +114 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/configuration/profiles.d.ts +13 -0
- package/dist/services/configuration/profiles.d.ts.map +1 -0
- package/dist/services/configuration/profiles.js +108 -0
- package/dist/services/configuration/profiles.js.map +1 -0
- package/dist/services/configuration.d.ts +50 -0
- package/dist/services/configuration.d.ts.map +1 -0
- package/dist/services/configuration.js +74 -0
- package/dist/services/configuration.js.map +1 -0
- package/dist/services/connectors/google.d.ts +17 -0
- package/dist/services/connectors/google.d.ts.map +1 -0
- package/dist/services/connectors/google.js +81 -0
- package/dist/services/connectors/google.js.map +1 -0
- package/dist/services/connectors/oidc.d.ts +14 -0
- package/dist/services/connectors/oidc.d.ts.map +1 -0
- package/dist/services/connectors/oidc.js +100 -0
- package/dist/services/connectors/oidc.js.map +1 -0
- package/dist/services/connectors/registry.d.ts +13 -0
- package/dist/services/connectors/registry.d.ts.map +1 -0
- package/dist/services/connectors/registry.js +109 -0
- package/dist/services/connectors/registry.js.map +1 -0
- package/dist/services/connectors/types.d.ts +36 -0
- package/dist/services/connectors/types.d.ts.map +1 -0
- package/dist/services/connectors/types.js +2 -0
- package/dist/services/connectors/types.js.map +1 -0
- package/dist/services/connectors/zitadel.d.ts +14 -0
- package/dist/services/connectors/zitadel.d.ts.map +1 -0
- package/dist/services/connectors/zitadel.js +70 -0
- package/dist/services/connectors/zitadel.js.map +1 -0
- package/dist/services/devices.d.ts +4 -0
- package/dist/services/devices.d.ts.map +1 -0
- package/dist/services/devices.js +59 -0
- package/dist/services/devices.js.map +1 -0
- package/dist/services/domain/authentication.d.ts +51 -0
- package/dist/services/domain/authentication.d.ts.map +1 -0
- package/dist/services/domain/authentication.js +218 -0
- package/dist/services/domain/authentication.js.map +1 -0
- package/dist/services/domain/authorization.d.ts +20 -0
- package/dist/services/domain/authorization.d.ts.map +1 -0
- package/dist/services/domain/authorization.js +36 -0
- package/dist/services/domain/authorization.js.map +1 -0
- package/dist/services/domain/identity.d.ts +43 -0
- package/dist/services/domain/identity.d.ts.map +1 -0
- package/dist/services/domain/identity.js +75 -0
- package/dist/services/domain/identity.js.map +1 -0
- package/dist/services/domain/index.d.ts +5 -0
- package/dist/services/domain/index.d.ts.map +1 -0
- package/dist/services/domain/index.js +5 -0
- package/dist/services/domain/index.js.map +1 -0
- package/dist/services/domain/organization.d.ts +60 -0
- package/dist/services/domain/organization.d.ts.map +1 -0
- package/dist/services/domain/organization.js +87 -0
- package/dist/services/domain/organization.js.map +1 -0
- package/dist/services/email.d.ts +24 -0
- package/dist/services/email.d.ts.map +1 -0
- package/dist/services/email.js +127 -0
- package/dist/services/email.js.map +1 -0
- package/dist/services/emailVerification.d.ts +20 -0
- package/dist/services/emailVerification.d.ts.map +1 -0
- package/dist/services/emailVerification.js +58 -0
- package/dist/services/emailVerification.js.map +1 -0
- package/dist/services/enterpriseSso.d.ts +34 -0
- package/dist/services/enterpriseSso.d.ts.map +1 -0
- package/dist/services/enterpriseSso.js +40 -0
- package/dist/services/enterpriseSso.js.map +1 -0
- package/dist/services/events/bus.d.ts +9 -0
- package/dist/services/events/bus.d.ts.map +1 -0
- package/dist/services/events/bus.js +36 -0
- package/dist/services/events/bus.js.map +1 -0
- package/dist/services/events/subscribers/anomaly.d.ts +3 -0
- package/dist/services/events/subscribers/anomaly.d.ts.map +1 -0
- package/dist/services/events/subscribers/anomaly.js +13 -0
- package/dist/services/events/subscribers/anomaly.js.map +1 -0
- package/dist/services/events/subscribers/auditLog.d.ts +3 -0
- package/dist/services/events/subscribers/auditLog.d.ts.map +1 -0
- package/dist/services/events/subscribers/auditLog.js +21 -0
- package/dist/services/events/subscribers/auditLog.js.map +1 -0
- package/dist/services/events/subscribers/webhook.d.ts +3 -0
- package/dist/services/events/subscribers/webhook.d.ts.map +1 -0
- package/dist/services/events/subscribers/webhook.js +36 -0
- package/dist/services/events/subscribers/webhook.js.map +1 -0
- package/dist/services/events/subscribers/webhookDispatch.d.ts +7 -0
- package/dist/services/events/subscribers/webhookDispatch.d.ts.map +1 -0
- package/dist/services/events/subscribers/webhookDispatch.js +14 -0
- package/dist/services/events/subscribers/webhookDispatch.js.map +1 -0
- package/dist/services/events/types.d.ts +21 -0
- package/dist/services/events/types.d.ts.map +1 -0
- package/dist/services/events/types.js +8 -0
- package/dist/services/events/types.js.map +1 -0
- package/dist/services/events/validate.d.ts +9 -0
- package/dist/services/events/validate.d.ts.map +1 -0
- package/dist/services/events/validate.js +103 -0
- package/dist/services/events/validate.js.map +1 -0
- package/dist/services/featureFlags.d.ts +15 -0
- package/dist/services/featureFlags.d.ts.map +1 -0
- package/dist/services/featureFlags.js +74 -0
- package/dist/services/featureFlags.js.map +1 -0
- package/dist/services/features.d.ts +12 -0
- package/dist/services/features.d.ts.map +1 -0
- package/dist/services/features.js +17 -0
- package/dist/services/features.js.map +1 -0
- package/dist/services/federation.d.ts +12 -0
- package/dist/services/federation.d.ts.map +1 -0
- package/dist/services/federation.js +22 -0
- package/dist/services/federation.js.map +1 -0
- package/dist/services/hibp.d.ts +2 -0
- package/dist/services/hibp.d.ts.map +1 -0
- package/dist/services/hibp.js +29 -0
- package/dist/services/hibp.js.map +1 -0
- package/dist/services/ipControls.d.ts +7 -0
- package/dist/services/ipControls.d.ts.map +1 -0
- package/dist/services/ipControls.js +92 -0
- package/dist/services/ipControls.js.map +1 -0
- package/dist/services/magicLinks.d.ts +16 -0
- package/dist/services/magicLinks.d.ts.map +1 -0
- package/dist/services/magicLinks.js +39 -0
- package/dist/services/magicLinks.js.map +1 -0
- package/dist/services/oauth2.d.ts +58 -0
- package/dist/services/oauth2.d.ts.map +1 -0
- package/dist/services/oauth2.js +144 -0
- package/dist/services/oauth2.js.map +1 -0
- package/dist/services/organizations.d.ts +39 -0
- package/dist/services/organizations.d.ts.map +1 -0
- package/dist/services/organizations.js +135 -0
- package/dist/services/organizations.js.map +1 -0
- package/dist/services/permissions.d.ts +19 -0
- package/dist/services/permissions.d.ts.map +1 -0
- package/dist/services/permissions.js +119 -0
- package/dist/services/permissions.js.map +1 -0
- package/dist/services/plugins/registry.d.ts +17 -0
- package/dist/services/plugins/registry.d.ts.map +1 -0
- package/dist/services/plugins/registry.js +196 -0
- package/dist/services/plugins/registry.js.map +1 -0
- package/dist/services/plugins/types.d.ts +86 -0
- package/dist/services/plugins/types.d.ts.map +1 -0
- package/dist/services/plugins/types.js +2 -0
- package/dist/services/plugins/types.js.map +1 -0
- package/dist/services/queue/bullmq.d.ts +16 -0
- package/dist/services/queue/bullmq.d.ts.map +1 -0
- package/dist/services/queue/bullmq.js +89 -0
- package/dist/services/queue/bullmq.js.map +1 -0
- package/dist/services/queue/inProcess.d.ts +15 -0
- package/dist/services/queue/inProcess.d.ts.map +1 -0
- package/dist/services/queue/inProcess.js +63 -0
- package/dist/services/queue/inProcess.js.map +1 -0
- package/dist/services/queue/index.d.ts +7 -0
- package/dist/services/queue/index.d.ts.map +1 -0
- package/dist/services/queue/index.js +19 -0
- package/dist/services/queue/index.js.map +1 -0
- package/dist/services/queue/types.d.ts +24 -0
- package/dist/services/queue/types.d.ts.map +1 -0
- package/dist/services/queue/types.js +2 -0
- package/dist/services/queue/types.js.map +1 -0
- package/dist/services/redis.d.ts +9 -0
- package/dist/services/redis.d.ts.map +1 -0
- package/dist/services/redis.js +15 -0
- package/dist/services/redis.js.map +1 -0
- package/dist/services/secrets/awsKms.d.ts +41 -0
- package/dist/services/secrets/awsKms.d.ts.map +1 -0
- package/dist/services/secrets/awsKms.js +81 -0
- package/dist/services/secrets/awsKms.js.map +1 -0
- package/dist/services/secrets/azureKeyVault.d.ts +44 -0
- package/dist/services/secrets/azureKeyVault.d.ts.map +1 -0
- package/dist/services/secrets/azureKeyVault.js +152 -0
- package/dist/services/secrets/azureKeyVault.js.map +1 -0
- package/dist/services/secrets/database.d.ts +29 -0
- package/dist/services/secrets/database.d.ts.map +1 -0
- package/dist/services/secrets/database.js +138 -0
- package/dist/services/secrets/database.js.map +1 -0
- package/dist/services/secrets/environment.d.ts +27 -0
- package/dist/services/secrets/environment.d.ts.map +1 -0
- package/dist/services/secrets/environment.js +102 -0
- package/dist/services/secrets/environment.js.map +1 -0
- package/dist/services/secrets/index.d.ts +30 -0
- package/dist/services/secrets/index.d.ts.map +1 -0
- package/dist/services/secrets/index.js +46 -0
- package/dist/services/secrets/index.js.map +1 -0
- package/dist/services/secrets/password.d.ts +10 -0
- package/dist/services/secrets/password.d.ts.map +1 -0
- package/dist/services/secrets/password.js +62 -0
- package/dist/services/secrets/password.js.map +1 -0
- package/dist/services/secrets/provider.d.ts +36 -0
- package/dist/services/secrets/provider.d.ts.map +1 -0
- package/dist/services/secrets/provider.js +2 -0
- package/dist/services/secrets/provider.js.map +1 -0
- package/dist/services/secrets/vault.d.ts +41 -0
- package/dist/services/secrets/vault.d.ts.map +1 -0
- package/dist/services/secrets/vault.js +133 -0
- package/dist/services/secrets/vault.js.map +1 -0
- package/dist/services/secrets.d.ts +2 -0
- package/dist/services/secrets.d.ts.map +1 -0
- package/dist/services/secrets.js +3 -0
- package/dist/services/secrets.js.map +1 -0
- package/dist/services/serviceAccounts.d.ts +24 -0
- package/dist/services/serviceAccounts.d.ts.map +1 -0
- package/dist/services/serviceAccounts.js +53 -0
- package/dist/services/serviceAccounts.js.map +1 -0
- package/dist/services/setup/configWriter.d.ts +18 -0
- package/dist/services/setup/configWriter.d.ts.map +1 -0
- package/dist/services/setup/configWriter.js +192 -0
- package/dist/services/setup/configWriter.js.map +1 -0
- package/dist/services/setup/diagnostics.d.ts +7 -0
- package/dist/services/setup/diagnostics.d.ts.map +1 -0
- package/dist/services/setup/diagnostics.js +73 -0
- package/dist/services/setup/diagnostics.js.map +1 -0
- package/dist/services/setup/token.d.ts +5 -0
- package/dist/services/setup/token.d.ts.map +1 -0
- package/dist/services/setup/token.js +37 -0
- package/dist/services/setup/token.js.map +1 -0
- package/dist/services/setup/types.d.ts +35 -0
- package/dist/services/setup/types.d.ts.map +1 -0
- package/dist/services/setup/types.js +2 -0
- package/dist/services/setup/types.js.map +1 -0
- package/dist/services/setup/validation.d.ts +7 -0
- package/dist/services/setup/validation.d.ts.map +1 -0
- package/dist/services/setup/validation.js +198 -0
- package/dist/services/setup/validation.js.map +1 -0
- package/dist/services/sms.d.ts +10 -0
- package/dist/services/sms.d.ts.map +1 -0
- package/dist/services/sms.js +62 -0
- package/dist/services/sms.js.map +1 -0
- package/dist/services/smsOtp.d.ts +7 -0
- package/dist/services/smsOtp.d.ts.map +1 -0
- package/dist/services/smsOtp.js +56 -0
- package/dist/services/smsOtp.js.map +1 -0
- package/dist/services/tokens.d.ts +66 -0
- package/dist/services/tokens.d.ts.map +1 -0
- package/dist/services/tokens.js +205 -0
- package/dist/services/tokens.js.map +1 -0
- package/dist/services/totp.d.ts +16 -0
- package/dist/services/totp.d.ts.map +1 -0
- package/dist/services/totp.js +96 -0
- package/dist/services/totp.js.map +1 -0
- package/dist/services/users.d.ts +39 -0
- package/dist/services/users.d.ts.map +1 -0
- package/dist/services/users.js +181 -0
- package/dist/services/users.js.map +1 -0
- package/dist/services/webauthn.d.ts +45 -0
- package/dist/services/webauthn.d.ts.map +1 -0
- package/dist/services/webauthn.js +147 -0
- package/dist/services/webauthn.js.map +1 -0
- package/dist/services/webhooks.d.ts +86 -0
- package/dist/services/webhooks.d.ts.map +1 -0
- package/dist/services/webhooks.js +164 -0
- package/dist/services/webhooks.js.map +1 -0
- package/dist/services/workflows/engine.d.ts +18 -0
- package/dist/services/workflows/engine.d.ts.map +1 -0
- package/dist/services/workflows/engine.js +104 -0
- package/dist/services/workflows/engine.js.map +1 -0
- package/dist/services/workflows/steps.d.ts +17 -0
- package/dist/services/workflows/steps.d.ts.map +1 -0
- package/dist/services/workflows/steps.js +109 -0
- package/dist/services/workflows/steps.js.map +1 -0
- package/dist/services/zitadel.d.ts +21 -0
- package/dist/services/zitadel.d.ts.map +1 -0
- package/dist/services/zitadel.js +228 -0
- package/dist/services/zitadel.js.map +1 -0
- package/dist/setup-server.d.ts +2 -0
- package/dist/setup-server.d.ts.map +1 -0
- package/dist/setup-server.js +63 -0
- package/dist/setup-server.js.map +1 -0
- package/dist/tests/errors.test.d.ts +2 -0
- package/dist/tests/errors.test.d.ts.map +1 -0
- package/dist/tests/errors.test.js +64 -0
- package/dist/tests/errors.test.js.map +1 -0
- package/dist/tests/events.test.d.ts +2 -0
- package/dist/tests/events.test.d.ts.map +1 -0
- package/dist/tests/events.test.js +45 -0
- package/dist/tests/events.test.js.map +1 -0
- package/dist/tests/featureFlags.test.d.ts +2 -0
- package/dist/tests/featureFlags.test.d.ts.map +1 -0
- package/dist/tests/featureFlags.test.js +24 -0
- package/dist/tests/featureFlags.test.js.map +1 -0
- package/dist/tests/integration/queue.test.d.ts +2 -0
- package/dist/tests/integration/queue.test.d.ts.map +1 -0
- package/dist/tests/integration/queue.test.js +49 -0
- package/dist/tests/integration/queue.test.js.map +1 -0
- package/dist/tests/plugins.test.d.ts +2 -0
- package/dist/tests/plugins.test.d.ts.map +1 -0
- package/dist/tests/plugins.test.js +56 -0
- package/dist/tests/plugins.test.js.map +1 -0
- package/dist/tests/result.test.d.ts +2 -0
- package/dist/tests/result.test.d.ts.map +1 -0
- package/dist/tests/result.test.js +46 -0
- package/dist/tests/result.test.js.map +1 -0
- package/dist/tests/setup/configWriter.test.d.ts +2 -0
- package/dist/tests/setup/configWriter.test.d.ts.map +1 -0
- package/dist/tests/setup/configWriter.test.js +55 -0
- package/dist/tests/setup/configWriter.test.js.map +1 -0
- package/dist/tests/setup/validation.test.d.ts +2 -0
- package/dist/tests/setup/validation.test.d.ts.map +1 -0
- package/dist/tests/setup/validation.test.js +26 -0
- package/dist/tests/setup/validation.test.js.map +1 -0
- package/dist/tests/smoke.test.d.ts +2 -0
- package/dist/tests/smoke.test.d.ts.map +1 -0
- package/dist/tests/smoke.test.js +124 -0
- package/dist/tests/smoke.test.js.map +1 -0
- package/dist/types.d.ts +50 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/package.json +69 -0
- package/src/cli.ts +172 -0
- package/src/config.ts +143 -0
- package/src/container.ts +48 -0
- package/src/db/index.ts +53 -0
- package/src/db/migrations/0000_skinny_ben_parker.sql +553 -0
- package/src/db/migrations/0001_brief_joseph.sql +10 -0
- package/src/db/migrations/0002_add_account_lockout.sql +3 -0
- package/src/db/migrations/0003_steep_rachel_grey.sql +1 -0
- package/src/db/migrations/0004_clever_bill_hollister.sql +20 -0
- package/src/db/migrations/0005_steep_the_call.sql +2 -0
- package/src/db/migrations/0006_ambitious_boomer.sql +17 -0
- package/src/db/migrations/0007_greedy_vindicator.sql +40 -0
- package/src/db/migrations/meta/0000_snapshot.json +2964 -0
- package/src/db/migrations/meta/0001_snapshot.json +3031 -0
- package/src/db/migrations/meta/0003_snapshot.json +3051 -0
- package/src/db/migrations/meta/0004_snapshot.json +3163 -0
- package/src/db/migrations/meta/0005_snapshot.json +3177 -0
- package/src/db/migrations/meta/0006_snapshot.json +3270 -0
- package/src/db/migrations/meta/0007_snapshot.json +3489 -0
- package/src/db/migrations/meta/_journal.json +62 -0
- package/src/db/schema.ts +676 -0
- package/src/db/seed.ts +146 -0
- package/src/di.ts +81 -0
- package/src/index.ts +326 -0
- package/src/lib/errors.ts +139 -0
- package/src/lib/result.ts +44 -0
- package/src/lib/webhookSignature.ts +41 -0
- package/src/plugins/appContext.ts +76 -0
- package/src/plugins/audit.ts +42 -0
- package/src/plugins/auth.ts +230 -0
- package/src/plugins/metrics.ts +41 -0
- package/src/plugins/mtls.ts +94 -0
- package/src/plugins/permissions.ts +29 -0
- package/src/plugins/rateLimit.ts +133 -0
- package/src/plugins/requestLogger.ts +25 -0
- package/src/plugins/tracing.ts +22 -0
- package/src/repositories/apiKey.ts +158 -0
- package/src/repositories/application.ts +70 -0
- package/src/repositories/audit.ts +32 -0
- package/src/repositories/index.ts +9 -0
- package/src/repositories/oidcConnection.ts +111 -0
- package/src/repositories/organization.ts +167 -0
- package/src/repositories/permission.ts +153 -0
- package/src/repositories/samlConnection.ts +96 -0
- package/src/repositories/session.ts +86 -0
- package/src/repositories/types.ts +134 -0
- package/src/repositories/user.ts +161 -0
- package/src/routes/admin/billing.ts +48 -0
- package/src/routes/admin/helpers.ts +50 -0
- package/src/routes/admin/index.ts +16 -0
- package/src/routes/admin/organizations.ts +299 -0
- package/src/routes/admin/permissions.ts +80 -0
- package/src/routes/admin/platform.ts +335 -0
- package/src/routes/admin/sso.ts +138 -0
- package/src/routes/admin/webhooks.ts +73 -0
- package/src/routes/admin.ts +1 -0
- package/src/routes/apiKeys.ts +60 -0
- package/src/routes/auth.ts +214 -0
- package/src/routes/authz.ts +38 -0
- package/src/routes/config.ts +67 -0
- package/src/routes/emailVerification.ts +73 -0
- package/src/routes/federation.ts +156 -0
- package/src/routes/helpers.ts +17 -0
- package/src/routes/magicLinks.ts +107 -0
- package/src/routes/oauth.ts +167 -0
- package/src/routes/oauth2.ts +284 -0
- package/src/routes/oidcEnterprise.ts +166 -0
- package/src/routes/password.ts +90 -0
- package/src/routes/profile.ts +44 -0
- package/src/routes/saml.ts +209 -0
- package/src/routes/scim.ts +199 -0
- package/src/routes/sdk.ts +141 -0
- package/src/routes/serviceAccounts.ts +124 -0
- package/src/routes/sessions.ts +62 -0
- package/src/routes/setup.ts +315 -0
- package/src/routes/smsOtp.ts +67 -0
- package/src/routes/totp.ts +122 -0
- package/src/routes/webauthn.ts +147 -0
- package/src/routes/workflows.ts +157 -0
- package/src/sdk/index.ts +152 -0
- package/src/sdk/types.ts +54 -0
- package/src/services/anomalyDetection.ts +73 -0
- package/src/services/application/authentication.ts +75 -0
- package/src/services/application/identity.ts +56 -0
- package/src/services/application/index.ts +3 -0
- package/src/services/application/organization.ts +77 -0
- package/src/services/applications.ts +89 -0
- package/src/services/audit.ts +41 -0
- package/src/services/auditExport.ts +59 -0
- package/src/services/billing.ts +87 -0
- package/src/services/cache.ts +131 -0
- package/src/services/configuration/profiles.ts +115 -0
- package/src/services/configuration.ts +120 -0
- package/src/services/connectors/google.ts +92 -0
- package/src/services/connectors/oidc.ts +111 -0
- package/src/services/connectors/registry.ts +124 -0
- package/src/services/connectors/types.ts +38 -0
- package/src/services/connectors/zitadel.ts +77 -0
- package/src/services/devices.ts +76 -0
- package/src/services/domain/authentication.ts +279 -0
- package/src/services/domain/authorization.ts +49 -0
- package/src/services/domain/identity.ts +108 -0
- package/src/services/domain/index.ts +4 -0
- package/src/services/domain/organization.ts +114 -0
- package/src/services/email.ts +167 -0
- package/src/services/emailVerification.ts +75 -0
- package/src/services/enterpriseSso.ts +58 -0
- package/src/services/events/bus.ts +43 -0
- package/src/services/events/subscribers/anomaly.ts +13 -0
- package/src/services/events/subscribers/auditLog.ts +21 -0
- package/src/services/events/subscribers/webhook.ts +39 -0
- package/src/services/events/subscribers/webhookDispatch.ts +14 -0
- package/src/services/events/types.ts +106 -0
- package/src/services/events/validate.ts +118 -0
- package/src/services/featureFlags.ts +90 -0
- package/src/services/features.ts +22 -0
- package/src/services/federation.ts +30 -0
- package/src/services/hibp.ts +28 -0
- package/src/services/ipControls.ts +99 -0
- package/src/services/magicLinks.ts +51 -0
- package/src/services/oauth2.ts +216 -0
- package/src/services/organizations.ts +171 -0
- package/src/services/permissions.ts +146 -0
- package/src/services/plugins/registry.ts +242 -0
- package/src/services/plugins/types.ts +98 -0
- package/src/services/queue/bullmq.ts +104 -0
- package/src/services/queue/inProcess.ts +75 -0
- package/src/services/queue/index.ts +19 -0
- package/src/services/queue/types.ts +26 -0
- package/src/services/redis.ts +16 -0
- package/src/services/secrets/awsKms.ts +97 -0
- package/src/services/secrets/azureKeyVault.ts +171 -0
- package/src/services/secrets/database.ts +166 -0
- package/src/services/secrets/environment.ts +117 -0
- package/src/services/secrets/index.ts +50 -0
- package/src/services/secrets/password.ts +73 -0
- package/src/services/secrets/provider.ts +38 -0
- package/src/services/secrets/vault.ts +149 -0
- package/src/services/secrets.ts +2 -0
- package/src/services/serviceAccounts.ts +74 -0
- package/src/services/setup/configWriter.ts +200 -0
- package/src/services/setup/diagnostics.ts +76 -0
- package/src/services/setup/token.ts +42 -0
- package/src/services/setup/types.ts +40 -0
- package/src/services/setup/validation.ts +205 -0
- package/src/services/sms.ts +81 -0
- package/src/services/smsOtp.ts +74 -0
- package/src/services/tokens.ts +288 -0
- package/src/services/totp.ts +113 -0
- package/src/services/users.ts +239 -0
- package/src/services/webauthn.ts +193 -0
- package/src/services/webhooks.ts +190 -0
- package/src/services/workflows/engine.ts +125 -0
- package/src/services/workflows/steps.ts +129 -0
- package/src/services/zitadel.ts +277 -0
- package/src/setup-server.ts +71 -0
- package/src/tests/errors.test.ts +74 -0
- package/src/tests/events.test.ts +52 -0
- package/src/tests/featureFlags.test.ts +26 -0
- package/src/tests/integration/queue.test.ts +54 -0
- package/src/tests/plugins.test.ts +73 -0
- package/src/tests/result.test.ts +52 -0
- package/src/tests/setup/configWriter.test.ts +69 -0
- package/src/tests/setup/validation.test.ts +29 -0
- package/src/tests/smoke.test.ts +136 -0
- package/src/types.ts +70 -0
package/dist/db/seed.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import { eq, and } from "drizzle-orm";
|
|
3
|
+
import { db } from "./index.js";
|
|
4
|
+
import { organizations, users, orgMemberships, applications, workflows } from "./schema.js";
|
|
5
|
+
import { config } from "../config.js";
|
|
6
|
+
import { createApplication } from "../services/applications.js";
|
|
7
|
+
import { hashPassword } from "../services/secrets.js";
|
|
8
|
+
async function seed() {
|
|
9
|
+
const clientAppUrl = process.env.CLIENT_APP_URL || "http://localhost:5173";
|
|
10
|
+
const aiAppUrl = process.env.AI_APP_URL || "http://localhost:5174";
|
|
11
|
+
const landingAppUrl = process.env.LANDING_APP_URL || "http://localhost:5175";
|
|
12
|
+
// Idempotently create the Hilbras organization.
|
|
13
|
+
let [hilbrasOrg] = await db.select().from(organizations).where(eq(organizations.slug, "hilbras")).limit(1);
|
|
14
|
+
if (!hilbrasOrg) {
|
|
15
|
+
[hilbrasOrg] = await db
|
|
16
|
+
.insert(organizations)
|
|
17
|
+
.values({ name: "Hilbras", slug: "hilbras", plan: "enterprise" })
|
|
18
|
+
.returning();
|
|
19
|
+
console.log(`[seed] created organization ${hilbrasOrg.id}`);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log(`[seed] organization Hilbras already exists`);
|
|
23
|
+
}
|
|
24
|
+
const appDefinitions = [
|
|
25
|
+
{
|
|
26
|
+
name: "hilbras-os",
|
|
27
|
+
clientId: "hilbras-os",
|
|
28
|
+
secretEnv: "HILBRAS_OS_CLIENT_SECRET",
|
|
29
|
+
defaultSecret: "cs_os_default_secret_replace_in_production",
|
|
30
|
+
redirectUris: [`${clientAppUrl}/auth/callback`, `${clientAppUrl}/callback`],
|
|
31
|
+
allowedOrigins: [clientAppUrl],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "hilbras-ai",
|
|
35
|
+
clientId: "hilbras-ai",
|
|
36
|
+
secretEnv: "HILBRAS_AI_CLIENT_SECRET",
|
|
37
|
+
defaultSecret: "cs_ai_default_secret_replace_in_production",
|
|
38
|
+
redirectUris: [`${aiAppUrl}/auth/callback`, `${aiAppUrl}/callback`],
|
|
39
|
+
allowedOrigins: [aiAppUrl],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "hilbras-landing",
|
|
43
|
+
clientId: "hilbras-landing",
|
|
44
|
+
secretEnv: "HILBRAS_LANDING_CLIENT_SECRET",
|
|
45
|
+
defaultSecret: "cs_landing_default_secret_replace_in_production",
|
|
46
|
+
redirectUris: [`${landingAppUrl}/auth/callback`, `${landingAppUrl}/callback`],
|
|
47
|
+
allowedOrigins: [landingAppUrl],
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
for (const def of appDefinitions) {
|
|
51
|
+
const existing = await db.select().from(applications).where(eq(applications.clientId, def.clientId)).limit(1);
|
|
52
|
+
if (existing.length > 0) {
|
|
53
|
+
console.log(`[seed] application ${def.clientId} already exists`);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const secret = process.env[def.secretEnv] || def.defaultSecret;
|
|
57
|
+
const app = await createApplication({
|
|
58
|
+
orgId: hilbrasOrg.id,
|
|
59
|
+
name: def.name,
|
|
60
|
+
clientId: def.clientId,
|
|
61
|
+
clientSecret: secret,
|
|
62
|
+
redirectUris: def.redirectUris,
|
|
63
|
+
allowedOrigins: def.allowedOrigins,
|
|
64
|
+
});
|
|
65
|
+
console.log(`[seed] created application ${app.clientId} (${app.id})`);
|
|
66
|
+
}
|
|
67
|
+
// Ensure a seed owner exists and owns the Hilbras org.
|
|
68
|
+
const ownerEmail = config.SEED_OWNER_EMAIL;
|
|
69
|
+
const ownerPassword = process.env.KEYSTONE_SEED_OWNER_PASSWORD || crypto.randomUUID();
|
|
70
|
+
if (ownerEmail) {
|
|
71
|
+
let [owner] = await db.select().from(users).where(eq(users.email, ownerEmail.toLowerCase())).limit(1);
|
|
72
|
+
if (!owner) {
|
|
73
|
+
const username = ownerEmail.split("@")[0].replace(/[^a-z0-9_-]/g, "-").slice(0, 32);
|
|
74
|
+
[owner] = await db
|
|
75
|
+
.insert(users)
|
|
76
|
+
.values({
|
|
77
|
+
email: ownerEmail.toLowerCase(),
|
|
78
|
+
username,
|
|
79
|
+
name: username,
|
|
80
|
+
provider: "password",
|
|
81
|
+
emailVerified: true,
|
|
82
|
+
passwordHash: await hashPassword(ownerPassword),
|
|
83
|
+
})
|
|
84
|
+
.returning();
|
|
85
|
+
console.log(`[seed] created owner user ${owner.id}`);
|
|
86
|
+
if (!process.env.KEYSTONE_SEED_OWNER_PASSWORD) {
|
|
87
|
+
console.log(`[seed] generated owner password: ${ownerPassword}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.log(`[seed] owner user already exists`);
|
|
92
|
+
}
|
|
93
|
+
const existingMembership = await db
|
|
94
|
+
.select()
|
|
95
|
+
.from(orgMemberships)
|
|
96
|
+
.where(and(eq(orgMemberships.orgId, hilbrasOrg.id), eq(orgMemberships.userId, owner.id)))
|
|
97
|
+
.limit(1);
|
|
98
|
+
if (existingMembership.length === 0) {
|
|
99
|
+
await db.insert(orgMemberships).values({
|
|
100
|
+
orgId: hilbrasOrg.id,
|
|
101
|
+
userId: owner.id,
|
|
102
|
+
role: "owner",
|
|
103
|
+
});
|
|
104
|
+
console.log(`[seed] added owner membership`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Seed the default signup workflow.
|
|
108
|
+
const [existingWorkflow] = await db.select().from(workflows).where(eq(workflows.trigger, "user_registered")).limit(1);
|
|
109
|
+
if (!existingWorkflow) {
|
|
110
|
+
await db.insert(workflows).values({
|
|
111
|
+
orgId: hilbrasOrg.id,
|
|
112
|
+
name: "Default signup",
|
|
113
|
+
trigger: "user_registered",
|
|
114
|
+
definition: {
|
|
115
|
+
steps: [
|
|
116
|
+
{ type: "assign_role", role: "user" },
|
|
117
|
+
{ type: "create_organization", orgName: "{{username}}-personal", slug: "{{username}}-personal", outputKey: "personalOrgId" },
|
|
118
|
+
{ type: "add_membership", orgRef: "personalOrgId", role: "owner" },
|
|
119
|
+
{ type: "add_app_membership", role: "member" },
|
|
120
|
+
{ type: "send_welcome_email" },
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
console.log("[seed] created default signup workflow");
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
console.log("[seed] default signup workflow already exists");
|
|
128
|
+
}
|
|
129
|
+
console.log("[seed] done");
|
|
130
|
+
}
|
|
131
|
+
seed()
|
|
132
|
+
.catch((err) => {
|
|
133
|
+
console.error("[seed] failed:", err);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
})
|
|
136
|
+
.finally(async () => {
|
|
137
|
+
process.exit(0);
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/db/seed.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAoB,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,KAAK,UAAU,IAAI;IACjB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,uBAAuB,CAAC;IACnE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,uBAAuB,CAAC;IAE7E,gDAAgD;IAChD,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3G,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE;aACpB,MAAM,CAAC,aAAa,CAAC;aACrB,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;aAChE,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,cAAc,GAAG;QACrB;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,0BAA0B;YACrC,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,CAAC,GAAG,YAAY,gBAAgB,EAAE,GAAG,YAAY,WAAW,CAAC;YAC3E,cAAc,EAAE,CAAC,YAAY,CAAC;SAC/B;QACD;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,0BAA0B;YACrC,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,CAAC,GAAG,QAAQ,gBAAgB,EAAE,GAAG,QAAQ,WAAW,CAAC;YACnE,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,iBAAiB;YAC3B,SAAS,EAAE,+BAA+B;YAC1C,aAAa,EAAE,iDAAiD;YAChE,YAAY,EAAE,CAAC,GAAG,aAAa,gBAAgB,EAAE,GAAG,aAAa,WAAW,CAAC;YAC7E,cAAc,EAAE,CAAC,aAAa,CAAC;SAChC;KACF,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9G,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,QAAQ,iBAAiB,CAAC,CAAC;YACjE,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC;YAClC,KAAK,EAAE,UAAU,CAAC,EAAE;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,cAAc,EAAE,GAAG,CAAC,cAAc;SACnC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,uDAAuD;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IACtF,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpF,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE;iBACf,MAAM,CAAC,KAAK,CAAC;iBACb,MAAM,CAAC;gBACN,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE;gBAC/B,QAAQ;gBACR,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,UAAU;gBACpB,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,MAAM,YAAY,CAAC,aAAa,CAAC;aAChD,CAAC;iBACD,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,oCAAoC,aAAa,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,EAAE;aAChC,MAAM,EAAE;aACR,IAAI,CAAC,cAAc,CAAC;aACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;aACxF,KAAK,CAAC,CAAC,CAAC,CAAC;QAEZ,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;gBACrC,KAAK,EAAE,UAAU,CAAC,EAAE;gBACpB,MAAM,EAAE,KAAK,CAAC,EAAE;gBAChB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,UAAU,CAAC,EAAE;YACpB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;oBACrC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,eAAe,EAAE;oBAC5H,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;oBAClE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC9C,EAAE,IAAI,EAAE,oBAAoB,EAAE;iBAC/B;aACF;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC7B,CAAC;AAED,IAAI,EAAE;KACH,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;KACD,OAAO,CAAC,KAAK,IAAI,EAAE;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/di.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Container } from "./container.js";
|
|
2
|
+
import { AuthorizationDomainService } from "./services/domain/index.js";
|
|
3
|
+
import { AuthenticationApplicationService, IdentityApplicationService, OrganizationApplicationService } from "./services/application/index.js";
|
|
4
|
+
export declare function buildContainer(overrides?: Partial<Container>): Container;
|
|
5
|
+
export declare function initializeContainer(overrides?: Partial<Container>): Container;
|
|
6
|
+
export declare function buildApplicationServices(container: Container): {
|
|
7
|
+
auth: AuthenticationApplicationService;
|
|
8
|
+
identity: IdentityApplicationService;
|
|
9
|
+
organization: OrganizationApplicationService;
|
|
10
|
+
authorization: AuthorizationDomainService;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=di.d.ts.map
|
package/dist/di.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAgB9D,OAAO,EAEL,0BAA0B,EAG3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,8BAA8B,EAC/B,MAAM,iCAAiC,CAAC;AAEzC,wBAAgB,cAAc,CAAC,SAAS,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAgC5E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAI7E;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS;;;;;EAY5D"}
|
package/dist/di.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { setContainer } from "./container.js";
|
|
2
|
+
import { ConfigurationService } from "./services/configuration.js";
|
|
3
|
+
import { DefaultFeatureFlagService } from "./services/features.js";
|
|
4
|
+
import { DrizzleUserRepository, DrizzleIdentityRepository, DrizzleOrganizationRepository, DrizzleApplicationRepository, DrizzleAuditRepository, DrizzlePermissionRepository, DrizzleApiKeyRepository, DrizzleSamlConnectionRepository, DrizzleOidcConnectionRepository, } from "./repositories/index.js";
|
|
5
|
+
import { secretsProvider } from "./services/secrets/index.js";
|
|
6
|
+
import { queue } from "./services/queue/index.js";
|
|
7
|
+
import { AuthenticationDomainService, AuthorizationDomainService, IdentityDomainService, OrganizationDomainService, } from "./services/domain/index.js";
|
|
8
|
+
import { AuthenticationApplicationService, IdentityApplicationService, OrganizationApplicationService, } from "./services/application/index.js";
|
|
9
|
+
export function buildContainer(overrides = {}) {
|
|
10
|
+
const config = new ConfigurationService();
|
|
11
|
+
const features = new DefaultFeatureFlagService(config);
|
|
12
|
+
const userRepository = new DrizzleUserRepository();
|
|
13
|
+
const identityRepository = new DrizzleIdentityRepository();
|
|
14
|
+
const organizationRepository = new DrizzleOrganizationRepository();
|
|
15
|
+
const applicationRepository = new DrizzleApplicationRepository();
|
|
16
|
+
const auditRepository = new DrizzleAuditRepository();
|
|
17
|
+
const permissionRepository = new DrizzlePermissionRepository();
|
|
18
|
+
const apiKeyRepository = new DrizzleApiKeyRepository();
|
|
19
|
+
const samlConnectionRepository = new DrizzleSamlConnectionRepository();
|
|
20
|
+
const oidcConnectionRepository = new DrizzleOidcConnectionRepository();
|
|
21
|
+
const container = {
|
|
22
|
+
config,
|
|
23
|
+
features,
|
|
24
|
+
userRepository,
|
|
25
|
+
identityRepository,
|
|
26
|
+
organizationRepository,
|
|
27
|
+
applicationRepository,
|
|
28
|
+
auditRepository,
|
|
29
|
+
permissionRepository,
|
|
30
|
+
apiKeyRepository,
|
|
31
|
+
samlConnectionRepository,
|
|
32
|
+
oidcConnectionRepository,
|
|
33
|
+
secretsProvider,
|
|
34
|
+
queue,
|
|
35
|
+
...overrides,
|
|
36
|
+
};
|
|
37
|
+
return container;
|
|
38
|
+
}
|
|
39
|
+
export function initializeContainer(overrides) {
|
|
40
|
+
const container = buildContainer(overrides);
|
|
41
|
+
setContainer(container);
|
|
42
|
+
return container;
|
|
43
|
+
}
|
|
44
|
+
export function buildApplicationServices(container) {
|
|
45
|
+
const authorizationDomain = new AuthorizationDomainService(container.organizationRepository, container.permissionRepository);
|
|
46
|
+
const authenticationDomain = new AuthenticationDomainService(container.userRepository, container.applicationRepository);
|
|
47
|
+
const identityDomain = new IdentityDomainService(container.userRepository, container.identityRepository);
|
|
48
|
+
const organizationDomain = new OrganizationDomainService(container.organizationRepository, container.applicationRepository, container.userRepository);
|
|
49
|
+
return {
|
|
50
|
+
auth: new AuthenticationApplicationService(authenticationDomain),
|
|
51
|
+
identity: new IdentityApplicationService(identityDomain),
|
|
52
|
+
organization: new OrganizationApplicationService(organizationDomain, authorizationDomain, identityDomain),
|
|
53
|
+
authorization: authorizationDomain,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=di.js.map
|
package/dist/di.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"di.js","sourceRoot":"","sources":["../src/di.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import fastify from "fastify";
|
|
2
|
+
export declare function buildApp(): Promise<fastify.FastifyInstance<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, fastify.FastifyBaseLogger, fastify.FastifyTypeProviderDefault>>;
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,OAAiC,MAAM,SAAS,CAAC;AAiFxD,wBAAsB,QAAQ,uSAsL7B"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
3
|
+
import fastify from "fastify";
|
|
4
|
+
import cors from "@fastify/cors";
|
|
5
|
+
import cookie from "@fastify/cookie";
|
|
6
|
+
import swagger from "@fastify/swagger";
|
|
7
|
+
import swaggerUi from "@fastify/swagger-ui";
|
|
8
|
+
import { migrate } from "drizzle-orm/postgres-js/migrator";
|
|
9
|
+
import { config } from "./config.js";
|
|
10
|
+
import { db } from "./db/index.js";
|
|
11
|
+
import { initializeContainer } from "./di.js";
|
|
12
|
+
import { redis } from "./services/redis.js";
|
|
13
|
+
import { loadSigningKeys, getPublicJwks } from "./services/tokens.js";
|
|
14
|
+
import { loadWorkflows } from "./services/workflows/engine.js";
|
|
15
|
+
import { startTracing, stopTracing } from "./plugins/tracing.js";
|
|
16
|
+
import authPlugin from "./plugins/auth.js";
|
|
17
|
+
import auditPlugin from "./plugins/audit.js";
|
|
18
|
+
import requestLogger from "./plugins/requestLogger.js";
|
|
19
|
+
import { subscribe, subscribeAll } from "./services/events/bus.js";
|
|
20
|
+
import { auditLogSubscriber } from "./services/events/subscribers/auditLog.js";
|
|
21
|
+
import { webhookSubscriber } from "./services/events/subscribers/webhook.js";
|
|
22
|
+
import { webhookDispatchSubscriber } from "./services/events/subscribers/webhookDispatch.js";
|
|
23
|
+
import { startWebhookWorker } from "./services/webhooks.js";
|
|
24
|
+
import { anomalySubscriber } from "./services/events/subscribers/anomaly.js";
|
|
25
|
+
import { queue } from "./services/queue/index.js";
|
|
26
|
+
import { cache } from "./services/cache.js";
|
|
27
|
+
import { emailProvider } from "./services/email.js";
|
|
28
|
+
import { registerPlugin } from "./services/plugins/registry.js";
|
|
29
|
+
import appContextPlugin from "./plugins/appContext.js";
|
|
30
|
+
import permissionsPlugin from "./plugins/permissions.js";
|
|
31
|
+
import mtlsPlugin from "./plugins/mtls.js";
|
|
32
|
+
import metricsPlugin from "./plugins/metrics.js";
|
|
33
|
+
import { globalRateLimit } from "./plugins/rateLimit.js";
|
|
34
|
+
import authRoutes from "./routes/auth.js";
|
|
35
|
+
import oauthRoutes from "./routes/oauth.js";
|
|
36
|
+
import oauth2Routes from "./routes/oauth2.js";
|
|
37
|
+
import passwordRoutes from "./routes/password.js";
|
|
38
|
+
import apiKeyRoutes from "./routes/apiKeys.js";
|
|
39
|
+
import adminRoutes from "./routes/admin.js";
|
|
40
|
+
import serviceAccountRoutes from "./routes/serviceAccounts.js";
|
|
41
|
+
import magicLinkRoutes from "./routes/magicLinks.js";
|
|
42
|
+
import totpRoutes from "./routes/totp.js";
|
|
43
|
+
import webauthnRoutes from "./routes/webauthn.js";
|
|
44
|
+
import smsOtpRoutes from "./routes/smsOtp.js";
|
|
45
|
+
import authzRoutes from "./routes/authz.js";
|
|
46
|
+
import samlRoutes from "./routes/saml.js";
|
|
47
|
+
import oidcEnterpriseRoutes from "./routes/oidcEnterprise.js";
|
|
48
|
+
import scimRoutes from "./routes/scim.js";
|
|
49
|
+
import federationRoutes from "./routes/federation.js";
|
|
50
|
+
import workflowRoutes from "./routes/workflows.js";
|
|
51
|
+
import setupRoutes from "./routes/setup.js";
|
|
52
|
+
import sdkRoutes from "./routes/sdk.js";
|
|
53
|
+
import configRoutes from "./routes/config.js";
|
|
54
|
+
import sessionRoutes from "./routes/sessions.js";
|
|
55
|
+
import profileRoutes from "./routes/profile.js";
|
|
56
|
+
import emailVerificationRoutes from "./routes/emailVerification.js";
|
|
57
|
+
import { generateSetupToken, printSetupToken } from "./services/setup/token.js";
|
|
58
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
59
|
+
async function loadPluginsFromEnv(app) {
|
|
60
|
+
const pluginPaths = (config.KEYSTONE_PLUGINS || "")
|
|
61
|
+
.split(",")
|
|
62
|
+
.map((s) => s.trim())
|
|
63
|
+
.filter(Boolean);
|
|
64
|
+
for (const pluginPath of pluginPaths) {
|
|
65
|
+
try {
|
|
66
|
+
const module = await import(pluginPath);
|
|
67
|
+
const plugin = module.default || module.plugin || module;
|
|
68
|
+
if (plugin && typeof plugin === "object" && "metadata" in plugin) {
|
|
69
|
+
registerPlugin(plugin);
|
|
70
|
+
app.log.info(`Loaded plugin from ${pluginPath}: ${plugin.metadata.name}`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
app.log.warn(`Plugin ${pluginPath} did not export a valid KeystonePlugin`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
app.log.warn({ err }, `Failed to load plugin ${pluginPath}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export async function buildApp() {
|
|
82
|
+
const container = initializeContainer();
|
|
83
|
+
const app = fastify({
|
|
84
|
+
logger: { level: config.NODE_ENV === "production" ? "info" : "debug" },
|
|
85
|
+
trustProxy: true,
|
|
86
|
+
genReqId: () => crypto.randomUUID(),
|
|
87
|
+
});
|
|
88
|
+
app.decorate("container", container);
|
|
89
|
+
await app.register(requestLogger);
|
|
90
|
+
await app.register(swagger, {
|
|
91
|
+
openapi: {
|
|
92
|
+
info: {
|
|
93
|
+
title: "Hilbras Keystone API",
|
|
94
|
+
description: "Identity platform API for Hilbras products and third-party apps.",
|
|
95
|
+
version: "1.0.0",
|
|
96
|
+
},
|
|
97
|
+
servers: [{ url: config.AUTH_API_PUBLIC_URL || `http://localhost:${config.PORT}` }],
|
|
98
|
+
tags: [
|
|
99
|
+
{ name: "Auth", description: "Authentication and session management" },
|
|
100
|
+
{ name: "Admin", description: "Organization and application management" },
|
|
101
|
+
{ name: "Discovery", description: "JWKS and health endpoints" },
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
await app.register(swaggerUi, {
|
|
106
|
+
routePrefix: "/documentation",
|
|
107
|
+
});
|
|
108
|
+
await app.register(cors, {
|
|
109
|
+
origin: (origin, cb) => {
|
|
110
|
+
if (!origin)
|
|
111
|
+
return cb(null, true);
|
|
112
|
+
if (config.ALLOWED_ORIGINS.length === 0)
|
|
113
|
+
return cb(null, true);
|
|
114
|
+
if (config.ALLOWED_ORIGINS.includes(origin))
|
|
115
|
+
return cb(null, true);
|
|
116
|
+
// In development, allow any localhost origin so external test projects
|
|
117
|
+
// can connect without pre-registering them in ALLOWED_ORIGINS.
|
|
118
|
+
if (config.NODE_ENV !== "production" && origin?.startsWith("http://localhost:")) {
|
|
119
|
+
return cb(null, true);
|
|
120
|
+
}
|
|
121
|
+
cb(new Error("Origin not allowed"), false);
|
|
122
|
+
},
|
|
123
|
+
credentials: true,
|
|
124
|
+
});
|
|
125
|
+
await app.register(cookie, {
|
|
126
|
+
secret: config.INTERNAL_API_KEY || undefined,
|
|
127
|
+
parseOptions: {},
|
|
128
|
+
});
|
|
129
|
+
await app.register(auditPlugin);
|
|
130
|
+
// Wire up event-bus subscribers.
|
|
131
|
+
subscribeAll(auditLogSubscriber);
|
|
132
|
+
subscribeAll(webhookSubscriber);
|
|
133
|
+
subscribeAll(webhookDispatchSubscriber);
|
|
134
|
+
subscribe("user_login_failed", anomalySubscriber);
|
|
135
|
+
subscribe("new_device_detected", anomalySubscriber);
|
|
136
|
+
// Register background job processors.
|
|
137
|
+
queue.process("email", async (job) => {
|
|
138
|
+
const { message } = job.payload;
|
|
139
|
+
await emailProvider.send(message);
|
|
140
|
+
});
|
|
141
|
+
startWebhookWorker();
|
|
142
|
+
queue.process("webhook", async (job) => {
|
|
143
|
+
const { url, method, body, headers } = job.payload;
|
|
144
|
+
await fetch(url, {
|
|
145
|
+
method: method || "POST",
|
|
146
|
+
headers: { "Content-Type": "application/json", ...(headers || {}) },
|
|
147
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
queue.process("workflow_run", async (job) => {
|
|
151
|
+
const { runId, workflowId } = job.payload;
|
|
152
|
+
const { executeRunById } = await import("./services/workflows/engine.js");
|
|
153
|
+
await executeRunById(runId, workflowId);
|
|
154
|
+
});
|
|
155
|
+
// Expose plugin registration on the Fastify instance.
|
|
156
|
+
app.decorate("registerPlugin", (plugin) => {
|
|
157
|
+
registerPlugin(plugin);
|
|
158
|
+
app.log.info(`Registered plugin: ${plugin.metadata.name}`);
|
|
159
|
+
});
|
|
160
|
+
// Load plugins configured via env (comma-separated list of module paths).
|
|
161
|
+
await loadPluginsFromEnv(app);
|
|
162
|
+
app.addHook("onClose", async () => {
|
|
163
|
+
await queue.close?.();
|
|
164
|
+
// The cache owns its own Redis connection (opened eagerly when REDIS_URL
|
|
165
|
+
// is set); without this it keeps a socket open after shutdown.
|
|
166
|
+
await cache.close().catch(() => { });
|
|
167
|
+
});
|
|
168
|
+
// Global API rate limiting to protect the platform from abuse.
|
|
169
|
+
app.addHook("onRequest", globalRateLimit({
|
|
170
|
+
maxRequests: Number(config.GLOBAL_RATE_LIMIT_MAX) || 100,
|
|
171
|
+
windowSeconds: Number(config.GLOBAL_RATE_LIMIT_WINDOW) || 60,
|
|
172
|
+
}));
|
|
173
|
+
await app.register(appContextPlugin);
|
|
174
|
+
await app.register(authPlugin);
|
|
175
|
+
await app.register(permissionsPlugin);
|
|
176
|
+
await app.register(mtlsPlugin);
|
|
177
|
+
await app.register(metricsPlugin);
|
|
178
|
+
await app.register(authRoutes, { prefix: "/auth" });
|
|
179
|
+
await app.register(sessionRoutes, { prefix: "/auth" });
|
|
180
|
+
await app.register(profileRoutes, { prefix: "/auth" });
|
|
181
|
+
await app.register(emailVerificationRoutes, { prefix: "/auth" });
|
|
182
|
+
await app.register(oauthRoutes, { prefix: "/auth" });
|
|
183
|
+
await app.register(oauth2Routes, { prefix: "/oauth2" });
|
|
184
|
+
await app.register(passwordRoutes, { prefix: "/auth" });
|
|
185
|
+
await app.register(apiKeyRoutes, { prefix: "/auth" });
|
|
186
|
+
await app.register(adminRoutes, { prefix: "/v1/admin" });
|
|
187
|
+
await app.register(serviceAccountRoutes, { prefix: "/v1/admin" });
|
|
188
|
+
await app.register(magicLinkRoutes, { prefix: "/auth" });
|
|
189
|
+
await app.register(totpRoutes, { prefix: "/auth" });
|
|
190
|
+
await app.register(webauthnRoutes, { prefix: "/auth" });
|
|
191
|
+
await app.register(smsOtpRoutes, { prefix: "/auth" });
|
|
192
|
+
await app.register(authzRoutes, { prefix: "/v1" });
|
|
193
|
+
await app.register(samlRoutes, { prefix: "/sso" });
|
|
194
|
+
await app.register(oidcEnterpriseRoutes, { prefix: "/sso" });
|
|
195
|
+
await app.register(scimRoutes, { prefix: "/" });
|
|
196
|
+
await app.register(federationRoutes, { prefix: "/federation" });
|
|
197
|
+
await app.register(workflowRoutes, { prefix: "/v1/admin" });
|
|
198
|
+
await app.register(sdkRoutes, { prefix: "/sdk" });
|
|
199
|
+
await app.register(configRoutes, { prefix: "/v1/admin/config" });
|
|
200
|
+
const issuer = config.AUTH_API_PUBLIC_URL || `http://localhost:${config.PORT}`;
|
|
201
|
+
app.get("/.well-known/openid-configuration", { schema: { tags: ["Discovery"] } }, async () => ({
|
|
202
|
+
issuer,
|
|
203
|
+
authorization_endpoint: `${issuer}/oauth2/authorize`,
|
|
204
|
+
token_endpoint: `${issuer}/oauth2/token`,
|
|
205
|
+
userinfo_endpoint: `${issuer}/oauth2/userinfo`,
|
|
206
|
+
revocation_endpoint: `${issuer}/oauth2/revoke`,
|
|
207
|
+
jwks_uri: `${issuer}/.well-known/jwks.json`,
|
|
208
|
+
response_types_supported: ["code"],
|
|
209
|
+
grant_types_supported: ["authorization_code", "refresh_token", "client_credentials"],
|
|
210
|
+
subject_types_supported: ["public"],
|
|
211
|
+
id_token_signing_alg_values_supported: ["RS256"],
|
|
212
|
+
scopes_supported: ["openid", "profile", "email"],
|
|
213
|
+
token_endpoint_auth_methods_supported: ["client_secret_post", "client_secret_basic"],
|
|
214
|
+
code_challenge_methods_supported: ["S256"],
|
|
215
|
+
}));
|
|
216
|
+
app.get("/.well-known/jwks.json", { schema: { tags: ["Discovery"] } }, async () => {
|
|
217
|
+
return getPublicJwks();
|
|
218
|
+
});
|
|
219
|
+
app.get("/health", { schema: { tags: ["Discovery"] } }, async () => ({ status: "ok" }));
|
|
220
|
+
await app.register(setupRoutes, { prefix: "/setup" });
|
|
221
|
+
app.setErrorHandler((error, request, reply) => {
|
|
222
|
+
if (error && typeof error === "object" && "validation" in error) {
|
|
223
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
224
|
+
return reply.status(400).send({ error: "Invalid input", details: message });
|
|
225
|
+
}
|
|
226
|
+
if (error instanceof Error && "statusCode" in error) {
|
|
227
|
+
const statusCode = error.statusCode;
|
|
228
|
+
const code = error.code;
|
|
229
|
+
if (statusCode >= 400 && statusCode < 600) {
|
|
230
|
+
return reply.status(statusCode).send({ error: error.message, code });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
request.log.error({ err: error }, "Unhandled error");
|
|
234
|
+
const message = config.NODE_ENV === "production" ? "Internal server error" : String(error);
|
|
235
|
+
return reply.status(500).send({ error: message });
|
|
236
|
+
});
|
|
237
|
+
return app;
|
|
238
|
+
}
|
|
239
|
+
async function start() {
|
|
240
|
+
startTracing();
|
|
241
|
+
await redis.connect().catch((err) => {
|
|
242
|
+
console.warn("Redis not available; rate limiting will fail open", err);
|
|
243
|
+
});
|
|
244
|
+
const app = await buildApp();
|
|
245
|
+
try {
|
|
246
|
+
await migrate(db, { migrationsFolder: path.resolve(__dirname, "./db/migrations") });
|
|
247
|
+
app.log.info("Database migrations applied");
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
app.log.error({ err }, "Database migration failed — the application may not work correctly");
|
|
251
|
+
}
|
|
252
|
+
try {
|
|
253
|
+
await loadSigningKeys();
|
|
254
|
+
app.log.info("JWT signing keys loaded");
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
app.log.error({ err }, "JWT signing key loading failed — token signing will not work");
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
generateSetupToken();
|
|
261
|
+
printSetupToken();
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
app.log.warn({ err }, "Could not generate setup token (may already exist)");
|
|
265
|
+
}
|
|
266
|
+
try {
|
|
267
|
+
await app.container.permissionRepository.ensureRolePermissionsSeeded();
|
|
268
|
+
app.log.info("Role permissions seeded");
|
|
269
|
+
}
|
|
270
|
+
catch (err) {
|
|
271
|
+
app.log.error({ err }, "Role permission seeding failed — authorization may not work correctly");
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
await loadWorkflows();
|
|
275
|
+
app.log.info("Workflows loaded");
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
app.log.warn({ err }, "Workflow loading failed (workflows feature may be unavailable)");
|
|
279
|
+
}
|
|
280
|
+
app.addHook("onClose", async () => {
|
|
281
|
+
await stopTracing();
|
|
282
|
+
});
|
|
283
|
+
try {
|
|
284
|
+
await app.listen({ port: config.PORT, host: config.HOST });
|
|
285
|
+
app.log.info(`Hilbras Keystone running on http://${config.HOST}:${config.PORT}`);
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
app.log.error(err);
|
|
289
|
+
process.exit(1);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) {
|
|
293
|
+
start();
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public OAuth/OIDC/Federation error codes. These are the only values we
|
|
3
|
+
* expose to browsers or third-party clients; internal failure details stay
|
|
4
|
+
* in server logs.
|
|
5
|
+
*/
|
|
6
|
+
export type OAuthErrorCode = "invalid_request" | "invalid_client" | "invalid_grant" | "access_denied" | "server_error" | "identity_broker_failure";
|
|
7
|
+
export interface OAuthErrorResponse {
|
|
8
|
+
statusCode: number;
|
|
9
|
+
body: {
|
|
10
|
+
error: OAuthErrorCode;
|
|
11
|
+
error_description?: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Map an internal error to a stable public OAuth-style code and HTTP status.
|
|
16
|
+
*
|
|
17
|
+
* The mapping is intentionally conservative: anything that could reveal
|
|
18
|
+
* implementation details or provider-specific behaviour collapses into a
|
|
19
|
+
* small set of opaque codes. Detailed diagnostics are written to server logs
|
|
20
|
+
* by the caller before this helper is invoked.
|
|
21
|
+
*/
|
|
22
|
+
export declare function classifyOAuthError(error: unknown): {
|
|
23
|
+
code: OAuthErrorCode;
|
|
24
|
+
statusCode: number;
|
|
25
|
+
};
|
|
26
|
+
export interface OAuthRedirectOptions {
|
|
27
|
+
/** OAuth `state` value that must be echoed back to the client. */
|
|
28
|
+
state?: string;
|
|
29
|
+
/** Override whether to include the original error message. Defaults to `true` only in development. */
|
|
30
|
+
includeDescription?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build a redirect URL that carries only a sanitized error code (and, in
|
|
34
|
+
* development, an optional description). Any existing query parameters on
|
|
35
|
+
* `redirectUrl` are preserved.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildOAuthErrorRedirect(error: unknown, redirectUrl: string, options?: OAuthRedirectOptions): string;
|
|
38
|
+
export interface OAuthResponseOptions {
|
|
39
|
+
/** Override whether to include the original error message. Defaults to `true` only in development. */
|
|
40
|
+
includeDescription?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build a sanitized JSON error response for endpoints that do not redirect.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildOAuthErrorResponse(error: unknown, options?: OAuthResponseOptions): OAuthErrorResponse;
|
|
46
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,cAAc,GACd,yBAAyB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc,CAAC;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAUD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAyC/F;AAED,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,CAgBR;AAED,MAAM,WAAW,oBAAoB;IACnC,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,kBAAkB,CAWpB"}
|