import { ForbiddenError } from "@casl/ability"; import { OrgPermissionActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { TWorkflowIntegrationDALFactory } from "./workflow-integration-dal"; import { TGetWorkflowIntegrationsByOrg } from "./workflow-integration-types"; type TWorkflowIntegrationServiceFactoryDep = { workflowIntegrationDAL: Pick; permissionService: Pick; }; export type TWorkflowIntegrationServiceFactory = ReturnType; export const workflowIntegrationServiceFactory = ({ workflowIntegrationDAL, permissionService }: TWorkflowIntegrationServiceFactoryDep) => { const getIntegrationsByOrg = async ({ actorId, actor, actorOrgId, actorAuthMethod }: TGetWorkflowIntegrationsByOrg) => { const { permission } = await permissionService.getOrgPermission( actor, actorId, actorOrgId, actorAuthMethod, actorOrgId ); ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Read, OrgPermissionSubjects.Settings); return workflowIntegrationDAL.find({ orgId: actorOrgId }); }; return { getIntegrationsByOrg }; };