@speckle/shared
Version:
Shared code between various Speckle JS packages
31 lines • 1.44 kB
JavaScript
import { err, ok } from 'true-myth/result';
import { WorkspacePlanNoFeatureAccessError, AccIntegrationNotEnabledError } from '../../domain/authErrors.js';
import { ensureImplicitProjectMemberWithReadAccessFragment } from '../../fragments/projects.js';
import { isWorkspaceFeatureFlagOn, WorkspaceFeatureFlags } from '../../../workspaces/index.js';
export const canReadAccIntegrationSettingsPolicy = (loaders) => async ({ userId, projectId }) => {
const env = await loaders.getEnv();
const project = await loaders.getProject({ projectId });
if (!env.FF_ACC_INTEGRATION_ENABLED || !project?.workspaceId) {
return err(new AccIntegrationNotEnabledError());
}
const ensuredProjectRole = await ensureImplicitProjectMemberWithReadAccessFragment(loaders)({
userId,
projectId
});
if (ensuredProjectRole.isErr) {
return err(ensuredProjectRole.error);
}
const workspacePlan = await loaders.getWorkspacePlan({
workspaceId: project.workspaceId
});
if (!workspacePlan)
return err(new WorkspacePlanNoFeatureAccessError());
const canUseFeature = isWorkspaceFeatureFlagOn({
workspaceFeatureFlags: workspacePlan.featureFlags,
feature: WorkspaceFeatureFlags.accIntegration
});
if (!canUseFeature)
return err(new WorkspacePlanNoFeatureAccessError());
return ok();
};
//# sourceMappingURL=canReadAccIntegrationSettings.js.map