mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 13:27:46 +00:00
821 lines
31 KiB
TypeScript
821 lines
31 KiB
TypeScript
import { Knex } from "knex";
|
|
import { z } from "zod";
|
|
|
|
import { registerV1EERoutes } from "@app/ee/routes/v1";
|
|
import { auditLogDALFactory } from "@app/ee/services/audit-log/audit-log-dal";
|
|
import { auditLogQueueServiceFactory } from "@app/ee/services/audit-log/audit-log-queue";
|
|
import { auditLogServiceFactory } from "@app/ee/services/audit-log/audit-log-service";
|
|
import { auditLogStreamDALFactory } from "@app/ee/services/audit-log-stream/audit-log-stream-dal";
|
|
import { auditLogStreamServiceFactory } from "@app/ee/services/audit-log-stream/audit-log-stream-service";
|
|
import { dynamicSecretDALFactory } from "@app/ee/services/dynamic-secret/dynamic-secret-dal";
|
|
import { dynamicSecretServiceFactory } from "@app/ee/services/dynamic-secret/dynamic-secret-service";
|
|
import { buildDynamicSecretProviders } from "@app/ee/services/dynamic-secret/providers";
|
|
import { dynamicSecretLeaseDALFactory } from "@app/ee/services/dynamic-secret-lease/dynamic-secret-lease-dal";
|
|
import { dynamicSecretLeaseQueueServiceFactory } from "@app/ee/services/dynamic-secret-lease/dynamic-secret-lease-queue";
|
|
import { dynamicSecretLeaseServiceFactory } from "@app/ee/services/dynamic-secret-lease/dynamic-secret-lease-service";
|
|
import { groupDALFactory } from "@app/ee/services/group/group-dal";
|
|
import { groupServiceFactory } from "@app/ee/services/group/group-service";
|
|
import { userGroupMembershipDALFactory } from "@app/ee/services/group/user-group-membership-dal";
|
|
import { identityProjectAdditionalPrivilegeDALFactory } from "@app/ee/services/identity-project-additional-privilege/identity-project-additional-privilege-dal";
|
|
import { identityProjectAdditionalPrivilegeServiceFactory } from "@app/ee/services/identity-project-additional-privilege/identity-project-additional-privilege-service";
|
|
import { ldapConfigDALFactory } from "@app/ee/services/ldap-config/ldap-config-dal";
|
|
import { ldapConfigServiceFactory } from "@app/ee/services/ldap-config/ldap-config-service";
|
|
import { ldapGroupMapDALFactory } from "@app/ee/services/ldap-config/ldap-group-map-dal";
|
|
import { licenseDALFactory } from "@app/ee/services/license/license-dal";
|
|
import { licenseServiceFactory } from "@app/ee/services/license/license-service";
|
|
import { permissionDALFactory } from "@app/ee/services/permission/permission-dal";
|
|
import { permissionServiceFactory } from "@app/ee/services/permission/permission-service";
|
|
import { projectUserAdditionalPrivilegeDALFactory } from "@app/ee/services/project-user-additional-privilege/project-user-additional-privilege-dal";
|
|
import { projectUserAdditionalPrivilegeServiceFactory } from "@app/ee/services/project-user-additional-privilege/project-user-additional-privilege-service";
|
|
import { samlConfigDALFactory } from "@app/ee/services/saml-config/saml-config-dal";
|
|
import { samlConfigServiceFactory } from "@app/ee/services/saml-config/saml-config-service";
|
|
import { scimDALFactory } from "@app/ee/services/scim/scim-dal";
|
|
import { scimServiceFactory } from "@app/ee/services/scim/scim-service";
|
|
import { secretApprovalPolicyApproverDALFactory } from "@app/ee/services/secret-approval-policy/secret-approval-policy-approver-dal";
|
|
import { secretApprovalPolicyDALFactory } from "@app/ee/services/secret-approval-policy/secret-approval-policy-dal";
|
|
import { secretApprovalPolicyServiceFactory } from "@app/ee/services/secret-approval-policy/secret-approval-policy-service";
|
|
import { secretApprovalRequestDALFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-dal";
|
|
import { secretApprovalRequestReviewerDALFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-reviewer-dal";
|
|
import { secretApprovalRequestSecretDALFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-secret-dal";
|
|
import { secretApprovalRequestServiceFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-service";
|
|
import { secretRotationDALFactory } from "@app/ee/services/secret-rotation/secret-rotation-dal";
|
|
import { secretRotationQueueFactory } from "@app/ee/services/secret-rotation/secret-rotation-queue";
|
|
import { secretRotationServiceFactory } from "@app/ee/services/secret-rotation/secret-rotation-service";
|
|
import { gitAppDALFactory } from "@app/ee/services/secret-scanning/git-app-dal";
|
|
import { gitAppInstallSessionDALFactory } from "@app/ee/services/secret-scanning/git-app-install-session-dal";
|
|
import { secretScanningDALFactory } from "@app/ee/services/secret-scanning/secret-scanning-dal";
|
|
import { secretScanningQueueFactory } from "@app/ee/services/secret-scanning/secret-scanning-queue";
|
|
import { secretScanningServiceFactory } from "@app/ee/services/secret-scanning/secret-scanning-service";
|
|
import { secretSnapshotServiceFactory } from "@app/ee/services/secret-snapshot/secret-snapshot-service";
|
|
import { snapshotDALFactory } from "@app/ee/services/secret-snapshot/snapshot-dal";
|
|
import { snapshotFolderDALFactory } from "@app/ee/services/secret-snapshot/snapshot-folder-dal";
|
|
import { snapshotSecretDALFactory } from "@app/ee/services/secret-snapshot/snapshot-secret-dal";
|
|
import { trustedIpDALFactory } from "@app/ee/services/trusted-ip/trusted-ip-dal";
|
|
import { trustedIpServiceFactory } from "@app/ee/services/trusted-ip/trusted-ip-service";
|
|
import { TKeyStoreFactory } from "@app/keystore/keystore";
|
|
import { getConfig } from "@app/lib/config/env";
|
|
import { TQueueServiceFactory } from "@app/queue";
|
|
import { readLimit } from "@app/server/config/rateLimiter";
|
|
import { apiKeyDALFactory } from "@app/services/api-key/api-key-dal";
|
|
import { apiKeyServiceFactory } from "@app/services/api-key/api-key-service";
|
|
import { authDALFactory } from "@app/services/auth/auth-dal";
|
|
import { authLoginServiceFactory } from "@app/services/auth/auth-login-service";
|
|
import { authPaswordServiceFactory } from "@app/services/auth/auth-password-service";
|
|
import { authSignupServiceFactory } from "@app/services/auth/auth-signup-service";
|
|
import { tokenDALFactory } from "@app/services/auth-token/auth-token-dal";
|
|
import { tokenServiceFactory } from "@app/services/auth-token/auth-token-service";
|
|
import { groupProjectDALFactory } from "@app/services/group-project/group-project-dal";
|
|
import { groupProjectMembershipRoleDALFactory } from "@app/services/group-project/group-project-membership-role-dal";
|
|
import { groupProjectServiceFactory } from "@app/services/group-project/group-project-service";
|
|
import { identityDALFactory } from "@app/services/identity/identity-dal";
|
|
import { identityOrgDALFactory } from "@app/services/identity/identity-org-dal";
|
|
import { identityServiceFactory } from "@app/services/identity/identity-service";
|
|
import { identityAccessTokenDALFactory } from "@app/services/identity-access-token/identity-access-token-dal";
|
|
import { identityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service";
|
|
import { identityAwsIamAuthDALFactory } from "@app/services/identity-aws-iam-auth/identity-aws-iam-auth-dal";
|
|
import { identityAwsIamAuthServiceFactory } from "@app/services/identity-aws-iam-auth/identity-aws-iam-auth-service";
|
|
import { identityProjectDALFactory } from "@app/services/identity-project/identity-project-dal";
|
|
import { identityProjectMembershipRoleDALFactory } from "@app/services/identity-project/identity-project-membership-role-dal";
|
|
import { identityProjectServiceFactory } from "@app/services/identity-project/identity-project-service";
|
|
import { identityUaClientSecretDALFactory } from "@app/services/identity-ua/identity-ua-client-secret-dal";
|
|
import { identityUaDALFactory } from "@app/services/identity-ua/identity-ua-dal";
|
|
import { identityUaServiceFactory } from "@app/services/identity-ua/identity-ua-service";
|
|
import { integrationDALFactory } from "@app/services/integration/integration-dal";
|
|
import { integrationServiceFactory } from "@app/services/integration/integration-service";
|
|
import { integrationAuthDALFactory } from "@app/services/integration-auth/integration-auth-dal";
|
|
import { integrationAuthServiceFactory } from "@app/services/integration-auth/integration-auth-service";
|
|
import { incidentContactDALFactory } from "@app/services/org/incident-contacts-dal";
|
|
import { orgBotDALFactory } from "@app/services/org/org-bot-dal";
|
|
import { orgDALFactory } from "@app/services/org/org-dal";
|
|
import { orgRoleDALFactory } from "@app/services/org/org-role-dal";
|
|
import { orgRoleServiceFactory } from "@app/services/org/org-role-service";
|
|
import { orgServiceFactory } from "@app/services/org/org-service";
|
|
import { orgMembershipDALFactory } from "@app/services/org-membership/org-membership-dal";
|
|
import { projectDALFactory } from "@app/services/project/project-dal";
|
|
import { projectQueueFactory } from "@app/services/project/project-queue";
|
|
import { projectServiceFactory } from "@app/services/project/project-service";
|
|
import { projectBotDALFactory } from "@app/services/project-bot/project-bot-dal";
|
|
import { projectBotServiceFactory } from "@app/services/project-bot/project-bot-service";
|
|
import { projectEnvDALFactory } from "@app/services/project-env/project-env-dal";
|
|
import { projectEnvServiceFactory } from "@app/services/project-env/project-env-service";
|
|
import { projectKeyDALFactory } from "@app/services/project-key/project-key-dal";
|
|
import { projectKeyServiceFactory } from "@app/services/project-key/project-key-service";
|
|
import { projectMembershipDALFactory } from "@app/services/project-membership/project-membership-dal";
|
|
import { projectMembershipServiceFactory } from "@app/services/project-membership/project-membership-service";
|
|
import { projectUserMembershipRoleDALFactory } from "@app/services/project-membership/project-user-membership-role-dal";
|
|
import { projectRoleDALFactory } from "@app/services/project-role/project-role-dal";
|
|
import { projectRoleServiceFactory } from "@app/services/project-role/project-role-service";
|
|
import { secretDALFactory } from "@app/services/secret/secret-dal";
|
|
import { secretQueueFactory } from "@app/services/secret/secret-queue";
|
|
import { secretServiceFactory } from "@app/services/secret/secret-service";
|
|
import { secretVersionDALFactory } from "@app/services/secret/secret-version-dal";
|
|
import { secretVersionTagDALFactory } from "@app/services/secret/secret-version-tag-dal";
|
|
import { secretBlindIndexDALFactory } from "@app/services/secret-blind-index/secret-blind-index-dal";
|
|
import { secretBlindIndexServiceFactory } from "@app/services/secret-blind-index/secret-blind-index-service";
|
|
import { secretFolderDALFactory } from "@app/services/secret-folder/secret-folder-dal";
|
|
import { secretFolderServiceFactory } from "@app/services/secret-folder/secret-folder-service";
|
|
import { secretFolderVersionDALFactory } from "@app/services/secret-folder/secret-folder-version-dal";
|
|
import { secretImportDALFactory } from "@app/services/secret-import/secret-import-dal";
|
|
import { secretImportServiceFactory } from "@app/services/secret-import/secret-import-service";
|
|
import { secretTagDALFactory } from "@app/services/secret-tag/secret-tag-dal";
|
|
import { secretTagServiceFactory } from "@app/services/secret-tag/secret-tag-service";
|
|
import { serviceTokenDALFactory } from "@app/services/service-token/service-token-dal";
|
|
import { serviceTokenServiceFactory } from "@app/services/service-token/service-token-service";
|
|
import { TSmtpService } from "@app/services/smtp/smtp-service";
|
|
import { superAdminDALFactory } from "@app/services/super-admin/super-admin-dal";
|
|
import { getServerCfg, superAdminServiceFactory } from "@app/services/super-admin/super-admin-service";
|
|
import { telemetryDALFactory } from "@app/services/telemetry/telemetry-dal";
|
|
import { telemetryQueueServiceFactory } from "@app/services/telemetry/telemetry-queue";
|
|
import { telemetryServiceFactory } from "@app/services/telemetry/telemetry-service";
|
|
import { userDALFactory } from "@app/services/user/user-dal";
|
|
import { userServiceFactory } from "@app/services/user/user-service";
|
|
import { userAliasDALFactory } from "@app/services/user-alias/user-alias-dal";
|
|
import { webhookDALFactory } from "@app/services/webhook/webhook-dal";
|
|
import { webhookServiceFactory } from "@app/services/webhook/webhook-service";
|
|
|
|
import { injectAuditLogInfo } from "../plugins/audit-log";
|
|
import { injectIdentity } from "../plugins/auth/inject-identity";
|
|
import { injectPermission } from "../plugins/auth/inject-permission";
|
|
import { registerSecretScannerGhApp } from "../plugins/secret-scanner";
|
|
import { registerV1Routes } from "./v1";
|
|
import { registerV2Routes } from "./v2";
|
|
import { registerV3Routes } from "./v3";
|
|
|
|
export const registerRoutes = async (
|
|
server: FastifyZodProvider,
|
|
{
|
|
db,
|
|
smtp: smtpService,
|
|
queue: queueService,
|
|
keyStore
|
|
}: { db: Knex; smtp: TSmtpService; queue: TQueueServiceFactory; keyStore: TKeyStoreFactory }
|
|
) => {
|
|
await server.register(registerSecretScannerGhApp, { prefix: "/ss-webhook" });
|
|
|
|
// db layers
|
|
const userDAL = userDALFactory(db);
|
|
const userAliasDAL = userAliasDALFactory(db);
|
|
const authDAL = authDALFactory(db);
|
|
const authTokenDAL = tokenDALFactory(db);
|
|
const orgDAL = orgDALFactory(db);
|
|
const orgMembershipDAL = orgMembershipDALFactory(db);
|
|
const orgBotDAL = orgBotDALFactory(db);
|
|
const incidentContactDAL = incidentContactDALFactory(db);
|
|
const orgRoleDAL = orgRoleDALFactory(db);
|
|
const superAdminDAL = superAdminDALFactory(db);
|
|
const apiKeyDAL = apiKeyDALFactory(db);
|
|
|
|
const projectDAL = projectDALFactory(db);
|
|
const projectMembershipDAL = projectMembershipDALFactory(db);
|
|
const projectUserAdditionalPrivilegeDAL = projectUserAdditionalPrivilegeDALFactory(db);
|
|
const projectUserMembershipRoleDAL = projectUserMembershipRoleDALFactory(db);
|
|
const projectRoleDAL = projectRoleDALFactory(db);
|
|
const projectEnvDAL = projectEnvDALFactory(db);
|
|
const projectKeyDAL = projectKeyDALFactory(db);
|
|
const projectBotDAL = projectBotDALFactory(db);
|
|
|
|
const secretDAL = secretDALFactory(db);
|
|
const secretTagDAL = secretTagDALFactory(db);
|
|
const folderDAL = secretFolderDALFactory(db);
|
|
const folderVersionDAL = secretFolderVersionDALFactory(db);
|
|
const secretImportDAL = secretImportDALFactory(db);
|
|
const secretVersionDAL = secretVersionDALFactory(db);
|
|
const secretVersionTagDAL = secretVersionTagDALFactory(db);
|
|
const secretBlindIndexDAL = secretBlindIndexDALFactory(db);
|
|
|
|
const integrationDAL = integrationDALFactory(db);
|
|
const integrationAuthDAL = integrationAuthDALFactory(db);
|
|
const webhookDAL = webhookDALFactory(db);
|
|
const serviceTokenDAL = serviceTokenDALFactory(db);
|
|
|
|
const identityDAL = identityDALFactory(db);
|
|
const identityAccessTokenDAL = identityAccessTokenDALFactory(db);
|
|
const identityOrgMembershipDAL = identityOrgDALFactory(db);
|
|
const identityProjectDAL = identityProjectDALFactory(db);
|
|
const identityProjectMembershipRoleDAL = identityProjectMembershipRoleDALFactory(db);
|
|
const identityProjectAdditionalPrivilegeDAL = identityProjectAdditionalPrivilegeDALFactory(db);
|
|
|
|
const identityUaDAL = identityUaDALFactory(db);
|
|
const identityUaClientSecretDAL = identityUaClientSecretDALFactory(db);
|
|
const identityAwsIamAuthDAL = identityAwsIamAuthDALFactory(db);
|
|
|
|
const auditLogDAL = auditLogDALFactory(db);
|
|
const auditLogStreamDAL = auditLogStreamDALFactory(db);
|
|
const trustedIpDAL = trustedIpDALFactory(db);
|
|
const telemetryDAL = telemetryDALFactory(db);
|
|
|
|
// ee db layer ops
|
|
const permissionDAL = permissionDALFactory(db);
|
|
const samlConfigDAL = samlConfigDALFactory(db);
|
|
const scimDAL = scimDALFactory(db);
|
|
const ldapConfigDAL = ldapConfigDALFactory(db);
|
|
const ldapGroupMapDAL = ldapGroupMapDALFactory(db);
|
|
const sapApproverDAL = secretApprovalPolicyApproverDALFactory(db);
|
|
const secretApprovalPolicyDAL = secretApprovalPolicyDALFactory(db);
|
|
const secretApprovalRequestDAL = secretApprovalRequestDALFactory(db);
|
|
const sarReviewerDAL = secretApprovalRequestReviewerDALFactory(db);
|
|
const sarSecretDAL = secretApprovalRequestSecretDALFactory(db);
|
|
|
|
const secretRotationDAL = secretRotationDALFactory(db);
|
|
const snapshotDAL = snapshotDALFactory(db);
|
|
const snapshotSecretDAL = snapshotSecretDALFactory(db);
|
|
const snapshotFolderDAL = snapshotFolderDALFactory(db);
|
|
|
|
const gitAppInstallSessionDAL = gitAppInstallSessionDALFactory(db);
|
|
const gitAppOrgDAL = gitAppDALFactory(db);
|
|
const groupDAL = groupDALFactory(db);
|
|
const groupProjectDAL = groupProjectDALFactory(db);
|
|
const groupProjectMembershipRoleDAL = groupProjectMembershipRoleDALFactory(db);
|
|
const userGroupMembershipDAL = userGroupMembershipDALFactory(db);
|
|
const secretScanningDAL = secretScanningDALFactory(db);
|
|
const licenseDAL = licenseDALFactory(db);
|
|
const dynamicSecretDAL = dynamicSecretDALFactory(db);
|
|
const dynamicSecretLeaseDAL = dynamicSecretLeaseDALFactory(db);
|
|
|
|
const permissionService = permissionServiceFactory({
|
|
permissionDAL,
|
|
orgRoleDAL,
|
|
projectRoleDAL,
|
|
serviceTokenDAL,
|
|
projectDAL
|
|
});
|
|
const licenseService = licenseServiceFactory({ permissionService, orgDAL, licenseDAL, keyStore });
|
|
const trustedIpService = trustedIpServiceFactory({
|
|
licenseService,
|
|
projectDAL,
|
|
trustedIpDAL,
|
|
permissionService
|
|
});
|
|
|
|
const auditLogQueue = auditLogQueueServiceFactory({
|
|
auditLogDAL,
|
|
queueService,
|
|
projectDAL,
|
|
licenseService,
|
|
auditLogStreamDAL
|
|
});
|
|
const auditLogService = auditLogServiceFactory({ auditLogDAL, permissionService, auditLogQueue });
|
|
const auditLogStreamService = auditLogStreamServiceFactory({
|
|
licenseService,
|
|
permissionService,
|
|
auditLogStreamDAL
|
|
});
|
|
const sapService = secretApprovalPolicyServiceFactory({
|
|
projectMembershipDAL,
|
|
projectEnvDAL,
|
|
secretApprovalPolicyApproverDAL: sapApproverDAL,
|
|
permissionService,
|
|
secretApprovalPolicyDAL
|
|
});
|
|
const tokenService = tokenServiceFactory({ tokenDAL: authTokenDAL, userDAL });
|
|
const samlService = samlConfigServiceFactory({
|
|
permissionService,
|
|
orgBotDAL,
|
|
orgDAL,
|
|
orgMembershipDAL,
|
|
userDAL,
|
|
userAliasDAL,
|
|
samlConfigDAL,
|
|
licenseService,
|
|
tokenService,
|
|
smtpService
|
|
});
|
|
const groupService = groupServiceFactory({
|
|
userDAL,
|
|
groupDAL,
|
|
groupProjectDAL,
|
|
orgDAL,
|
|
userGroupMembershipDAL,
|
|
projectDAL,
|
|
projectBotDAL,
|
|
projectKeyDAL,
|
|
permissionService,
|
|
licenseService
|
|
});
|
|
const groupProjectService = groupProjectServiceFactory({
|
|
groupDAL,
|
|
groupProjectDAL,
|
|
groupProjectMembershipRoleDAL,
|
|
userGroupMembershipDAL,
|
|
projectDAL,
|
|
projectKeyDAL,
|
|
projectBotDAL,
|
|
projectRoleDAL,
|
|
permissionService
|
|
});
|
|
const scimService = scimServiceFactory({
|
|
licenseService,
|
|
scimDAL,
|
|
userDAL,
|
|
userAliasDAL,
|
|
orgDAL,
|
|
orgMembershipDAL,
|
|
projectDAL,
|
|
projectMembershipDAL,
|
|
groupDAL,
|
|
groupProjectDAL,
|
|
userGroupMembershipDAL,
|
|
projectKeyDAL,
|
|
projectBotDAL,
|
|
permissionService,
|
|
smtpService
|
|
});
|
|
|
|
const ldapService = ldapConfigServiceFactory({
|
|
ldapConfigDAL,
|
|
ldapGroupMapDAL,
|
|
orgDAL,
|
|
orgMembershipDAL,
|
|
orgBotDAL,
|
|
groupDAL,
|
|
groupProjectDAL,
|
|
projectKeyDAL,
|
|
projectDAL,
|
|
projectBotDAL,
|
|
userGroupMembershipDAL,
|
|
userDAL,
|
|
userAliasDAL,
|
|
permissionService,
|
|
licenseService
|
|
});
|
|
|
|
const telemetryService = telemetryServiceFactory({
|
|
keyStore,
|
|
licenseService
|
|
});
|
|
const telemetryQueue = telemetryQueueServiceFactory({
|
|
keyStore,
|
|
telemetryDAL,
|
|
queueService
|
|
});
|
|
|
|
const userService = userServiceFactory({
|
|
userDAL,
|
|
userAliasDAL,
|
|
orgMembershipDAL,
|
|
tokenService,
|
|
smtpService
|
|
});
|
|
const loginService = authLoginServiceFactory({ userDAL, smtpService, tokenService, orgDAL, tokenDAL: authTokenDAL });
|
|
const passwordService = authPaswordServiceFactory({
|
|
tokenService,
|
|
smtpService,
|
|
authDAL,
|
|
userDAL
|
|
});
|
|
const orgService = orgServiceFactory({
|
|
userAliasDAL,
|
|
licenseService,
|
|
samlConfigDAL,
|
|
orgRoleDAL,
|
|
permissionService,
|
|
orgDAL,
|
|
incidentContactDAL,
|
|
tokenService,
|
|
projectDAL,
|
|
projectMembershipDAL,
|
|
projectKeyDAL,
|
|
smtpService,
|
|
userDAL,
|
|
groupDAL,
|
|
orgBotDAL
|
|
});
|
|
const signupService = authSignupServiceFactory({
|
|
tokenService,
|
|
smtpService,
|
|
authDAL,
|
|
userDAL,
|
|
userGroupMembershipDAL,
|
|
projectKeyDAL,
|
|
projectDAL,
|
|
projectBotDAL,
|
|
groupProjectDAL,
|
|
orgDAL,
|
|
orgService,
|
|
licenseService
|
|
});
|
|
const orgRoleService = orgRoleServiceFactory({ permissionService, orgRoleDAL });
|
|
const superAdminService = superAdminServiceFactory({
|
|
userDAL,
|
|
authService: loginService,
|
|
serverCfgDAL: superAdminDAL,
|
|
orgService,
|
|
keyStore
|
|
});
|
|
const apiKeyService = apiKeyServiceFactory({ apiKeyDAL, userDAL });
|
|
|
|
const secretScanningQueue = secretScanningQueueFactory({
|
|
telemetryService,
|
|
smtpService,
|
|
secretScanningDAL,
|
|
queueService,
|
|
orgMembershipDAL: orgDAL
|
|
});
|
|
const secretScanningService = secretScanningServiceFactory({
|
|
permissionService,
|
|
gitAppOrgDAL,
|
|
gitAppInstallSessionDAL,
|
|
secretScanningDAL,
|
|
secretScanningQueue
|
|
});
|
|
const projectBotService = projectBotServiceFactory({ permissionService, projectBotDAL, projectDAL });
|
|
|
|
const projectMembershipService = projectMembershipServiceFactory({
|
|
projectMembershipDAL,
|
|
projectUserMembershipRoleDAL,
|
|
projectDAL,
|
|
permissionService,
|
|
projectBotDAL,
|
|
orgDAL,
|
|
userDAL,
|
|
userGroupMembershipDAL,
|
|
smtpService,
|
|
projectKeyDAL,
|
|
projectRoleDAL,
|
|
licenseService
|
|
});
|
|
const projectUserAdditionalPrivilegeService = projectUserAdditionalPrivilegeServiceFactory({
|
|
permissionService,
|
|
projectMembershipDAL,
|
|
projectUserAdditionalPrivilegeDAL
|
|
});
|
|
const projectKeyService = projectKeyServiceFactory({
|
|
permissionService,
|
|
projectKeyDAL,
|
|
projectMembershipDAL
|
|
});
|
|
|
|
const projectQueueService = projectQueueFactory({
|
|
queueService,
|
|
secretDAL,
|
|
folderDAL,
|
|
projectDAL,
|
|
orgDAL,
|
|
integrationAuthDAL,
|
|
orgService,
|
|
projectEnvDAL,
|
|
userDAL,
|
|
secretVersionDAL,
|
|
projectKeyDAL,
|
|
projectBotDAL,
|
|
projectMembershipDAL,
|
|
secretApprovalRequestDAL,
|
|
secretApprovalSecretDAL: sarSecretDAL,
|
|
projectUserMembershipRoleDAL
|
|
});
|
|
|
|
const projectService = projectServiceFactory({
|
|
permissionService,
|
|
projectDAL,
|
|
projectQueue: projectQueueService,
|
|
secretBlindIndexDAL,
|
|
identityProjectDAL,
|
|
identityOrgMembershipDAL,
|
|
projectBotDAL,
|
|
projectKeyDAL,
|
|
userDAL,
|
|
projectEnvDAL,
|
|
orgDAL,
|
|
orgService,
|
|
projectMembershipDAL,
|
|
folderDAL,
|
|
licenseService,
|
|
projectUserMembershipRoleDAL,
|
|
identityProjectMembershipRoleDAL,
|
|
keyStore
|
|
});
|
|
|
|
const projectEnvService = projectEnvServiceFactory({
|
|
permissionService,
|
|
projectEnvDAL,
|
|
licenseService,
|
|
projectDAL,
|
|
folderDAL
|
|
});
|
|
|
|
const projectRoleService = projectRoleServiceFactory({
|
|
permissionService,
|
|
projectRoleDAL,
|
|
projectUserMembershipRoleDAL,
|
|
identityProjectMembershipRoleDAL
|
|
});
|
|
|
|
const snapshotService = secretSnapshotServiceFactory({
|
|
permissionService,
|
|
licenseService,
|
|
folderDAL,
|
|
secretDAL,
|
|
snapshotDAL,
|
|
snapshotFolderDAL,
|
|
snapshotSecretDAL,
|
|
secretVersionDAL,
|
|
folderVersionDAL,
|
|
secretTagDAL,
|
|
secretVersionTagDAL
|
|
});
|
|
const webhookService = webhookServiceFactory({
|
|
permissionService,
|
|
webhookDAL,
|
|
projectEnvDAL
|
|
});
|
|
|
|
const secretTagService = secretTagServiceFactory({ secretTagDAL, permissionService });
|
|
const folderService = secretFolderServiceFactory({
|
|
permissionService,
|
|
folderDAL,
|
|
folderVersionDAL,
|
|
projectEnvDAL,
|
|
snapshotService
|
|
});
|
|
const integrationAuthService = integrationAuthServiceFactory({
|
|
integrationAuthDAL,
|
|
integrationDAL,
|
|
permissionService,
|
|
projectBotDAL,
|
|
projectBotService
|
|
});
|
|
const secretQueueService = secretQueueFactory({
|
|
queueService,
|
|
secretDAL,
|
|
folderDAL,
|
|
integrationAuthService,
|
|
projectBotService,
|
|
integrationDAL,
|
|
secretImportDAL,
|
|
projectEnvDAL,
|
|
webhookDAL,
|
|
orgDAL,
|
|
projectMembershipDAL,
|
|
smtpService,
|
|
projectDAL,
|
|
projectBotDAL,
|
|
secretVersionDAL,
|
|
secretBlindIndexDAL,
|
|
secretTagDAL,
|
|
secretVersionTagDAL
|
|
});
|
|
const secretImportService = secretImportServiceFactory({
|
|
projectEnvDAL,
|
|
folderDAL,
|
|
permissionService,
|
|
secretImportDAL,
|
|
projectDAL,
|
|
secretDAL,
|
|
secretQueueService
|
|
});
|
|
const secretBlindIndexService = secretBlindIndexServiceFactory({
|
|
permissionService,
|
|
secretDAL,
|
|
secretBlindIndexDAL
|
|
});
|
|
const secretService = secretServiceFactory({
|
|
folderDAL,
|
|
secretVersionDAL,
|
|
secretVersionTagDAL,
|
|
secretBlindIndexDAL,
|
|
permissionService,
|
|
projectDAL,
|
|
secretDAL,
|
|
secretTagDAL,
|
|
snapshotService,
|
|
secretQueueService,
|
|
secretImportDAL,
|
|
projectEnvDAL,
|
|
projectBotService
|
|
});
|
|
const sarService = secretApprovalRequestServiceFactory({
|
|
permissionService,
|
|
folderDAL,
|
|
secretDAL,
|
|
secretTagDAL,
|
|
secretApprovalRequestSecretDAL: sarSecretDAL,
|
|
secretApprovalRequestReviewerDAL: sarReviewerDAL,
|
|
projectDAL,
|
|
secretVersionDAL,
|
|
secretBlindIndexDAL,
|
|
secretApprovalRequestDAL,
|
|
secretService,
|
|
snapshotService,
|
|
secretVersionTagDAL,
|
|
secretQueueService
|
|
});
|
|
const secretRotationQueue = secretRotationQueueFactory({
|
|
telemetryService,
|
|
secretRotationDAL,
|
|
queue: queueService,
|
|
secretDAL,
|
|
secretVersionDAL,
|
|
projectBotService
|
|
});
|
|
|
|
const secretRotationService = secretRotationServiceFactory({
|
|
permissionService,
|
|
secretRotationDAL,
|
|
secretRotationQueue,
|
|
projectDAL,
|
|
licenseService,
|
|
secretDAL,
|
|
folderDAL
|
|
});
|
|
|
|
const integrationService = integrationServiceFactory({
|
|
permissionService,
|
|
folderDAL,
|
|
integrationDAL,
|
|
integrationAuthDAL,
|
|
secretQueueService
|
|
});
|
|
const serviceTokenService = serviceTokenServiceFactory({
|
|
projectEnvDAL,
|
|
serviceTokenDAL,
|
|
userDAL,
|
|
permissionService,
|
|
projectDAL
|
|
});
|
|
|
|
const identityService = identityServiceFactory({
|
|
permissionService,
|
|
identityDAL,
|
|
identityOrgMembershipDAL
|
|
});
|
|
const identityAccessTokenService = identityAccessTokenServiceFactory({
|
|
identityAccessTokenDAL,
|
|
identityOrgMembershipDAL
|
|
});
|
|
const identityProjectService = identityProjectServiceFactory({
|
|
permissionService,
|
|
projectDAL,
|
|
identityProjectDAL,
|
|
identityOrgMembershipDAL,
|
|
identityProjectMembershipRoleDAL,
|
|
projectRoleDAL
|
|
});
|
|
const identityProjectAdditionalPrivilegeService = identityProjectAdditionalPrivilegeServiceFactory({
|
|
projectDAL,
|
|
identityProjectAdditionalPrivilegeDAL,
|
|
permissionService,
|
|
identityProjectDAL
|
|
});
|
|
const identityUaService = identityUaServiceFactory({
|
|
identityOrgMembershipDAL,
|
|
permissionService,
|
|
identityDAL,
|
|
identityAccessTokenDAL,
|
|
identityUaClientSecretDAL,
|
|
identityUaDAL,
|
|
licenseService
|
|
});
|
|
const identityAWSIAMAuthService = identityAwsIamAuthServiceFactory({
|
|
identityAccessTokenDAL,
|
|
identityAwsIamAuthDAL,
|
|
identityOrgMembershipDAL,
|
|
identityDAL,
|
|
licenseService,
|
|
permissionService
|
|
});
|
|
|
|
const dynamicSecretProviders = buildDynamicSecretProviders();
|
|
const dynamicSecretQueueService = dynamicSecretLeaseQueueServiceFactory({
|
|
queueService,
|
|
dynamicSecretLeaseDAL,
|
|
dynamicSecretProviders,
|
|
dynamicSecretDAL
|
|
});
|
|
const dynamicSecretService = dynamicSecretServiceFactory({
|
|
projectDAL,
|
|
dynamicSecretQueueService,
|
|
dynamicSecretDAL,
|
|
dynamicSecretLeaseDAL,
|
|
dynamicSecretProviders,
|
|
folderDAL,
|
|
permissionService,
|
|
licenseService
|
|
});
|
|
const dynamicSecretLeaseService = dynamicSecretLeaseServiceFactory({
|
|
projectDAL,
|
|
permissionService,
|
|
dynamicSecretQueueService,
|
|
dynamicSecretDAL,
|
|
dynamicSecretLeaseDAL,
|
|
dynamicSecretProviders,
|
|
folderDAL,
|
|
licenseService
|
|
});
|
|
|
|
await superAdminService.initServerCfg();
|
|
//
|
|
// setup the communication with license key server
|
|
await licenseService.init();
|
|
|
|
await auditLogQueue.startAuditLogPruneJob();
|
|
await telemetryQueue.startTelemetryCheck();
|
|
|
|
// inject all services
|
|
server.decorate<FastifyZodProvider["services"]>("services", {
|
|
login: loginService,
|
|
password: passwordService,
|
|
signup: signupService,
|
|
user: userService,
|
|
group: groupService,
|
|
groupProject: groupProjectService,
|
|
permission: permissionService,
|
|
org: orgService,
|
|
orgRole: orgRoleService,
|
|
apiKey: apiKeyService,
|
|
authToken: tokenService,
|
|
superAdmin: superAdminService,
|
|
project: projectService,
|
|
projectMembership: projectMembershipService,
|
|
projectKey: projectKeyService,
|
|
projectEnv: projectEnvService,
|
|
projectRole: projectRoleService,
|
|
secret: secretService,
|
|
secretTag: secretTagService,
|
|
folder: folderService,
|
|
secretImport: secretImportService,
|
|
projectBot: projectBotService,
|
|
integration: integrationService,
|
|
integrationAuth: integrationAuthService,
|
|
webhook: webhookService,
|
|
serviceToken: serviceTokenService,
|
|
identity: identityService,
|
|
identityAccessToken: identityAccessTokenService,
|
|
identityProject: identityProjectService,
|
|
identityUa: identityUaService,
|
|
identityAwsIamAuth: identityAWSIAMAuthService,
|
|
secretApprovalPolicy: sapService,
|
|
secretApprovalRequest: sarService,
|
|
secretRotation: secretRotationService,
|
|
dynamicSecret: dynamicSecretService,
|
|
dynamicSecretLease: dynamicSecretLeaseService,
|
|
snapshot: snapshotService,
|
|
saml: samlService,
|
|
ldap: ldapService,
|
|
auditLog: auditLogService,
|
|
auditLogStream: auditLogStreamService,
|
|
secretScanning: secretScanningService,
|
|
license: licenseService,
|
|
trustedIp: trustedIpService,
|
|
scim: scimService,
|
|
secretBlindIndex: secretBlindIndexService,
|
|
telemetry: telemetryService,
|
|
projectUserAdditionalPrivilege: projectUserAdditionalPrivilegeService,
|
|
identityProjectAdditionalPrivilege: identityProjectAdditionalPrivilegeService
|
|
});
|
|
|
|
server.decorate<FastifyZodProvider["store"]>("store", {
|
|
user: userDAL
|
|
});
|
|
|
|
await server.register(injectIdentity, { userDAL, serviceTokenDAL });
|
|
await server.register(injectPermission);
|
|
await server.register(injectAuditLogInfo);
|
|
|
|
server.route({
|
|
method: "GET",
|
|
url: "/api/status",
|
|
config: {
|
|
rateLimit: readLimit
|
|
},
|
|
schema: {
|
|
response: {
|
|
200: z.object({
|
|
date: z.date(),
|
|
message: z.literal("Ok"),
|
|
emailConfigured: z.boolean().optional(),
|
|
inviteOnlySignup: z.boolean().optional(),
|
|
redisConfigured: z.boolean().optional(),
|
|
secretScanningConfigured: z.boolean().optional()
|
|
})
|
|
}
|
|
},
|
|
handler: async () => {
|
|
const cfg = getConfig();
|
|
const serverCfg = await getServerCfg();
|
|
return {
|
|
date: new Date(),
|
|
message: "Ok" as const,
|
|
emailConfigured: cfg.isSmtpConfigured,
|
|
inviteOnlySignup: Boolean(serverCfg.allowSignUp),
|
|
redisConfigured: cfg.isRedisConfigured,
|
|
secretScanningConfigured: cfg.isSecretScanningConfigured
|
|
};
|
|
}
|
|
});
|
|
|
|
// register routes for v1
|
|
await server.register(
|
|
async (v1Server) => {
|
|
await v1Server.register(registerV1EERoutes);
|
|
await v1Server.register(registerV1Routes);
|
|
},
|
|
{ prefix: "/api/v1" }
|
|
);
|
|
await server.register(registerV2Routes, { prefix: "/api/v2" });
|
|
await server.register(registerV3Routes, { prefix: "/api/v3" });
|
|
|
|
server.addHook("onClose", async () => {
|
|
await telemetryService.flushAll();
|
|
});
|
|
};
|