UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

27 lines 1.36 kB
import { Roles } from '../../../../core/constants.js'; import { WorkspacePlanFeatures } from '../../../../workspaces/index.js'; import { ProjectNotEnoughPermissionsError } from '../../../domain/authErrors.js'; import { ensureCanUseProjectWorkspacePlanFeatureFragment, ensureImplicitProjectMemberWithWriteAccessFragment } from '../../../fragments/projects.js'; import { err, ok } from 'true-myth/result'; export const canCreateSavedViewPolicy = (loaders) => async ({ userId, projectId }) => { const canUseSavedViews = await ensureCanUseProjectWorkspacePlanFeatureFragment(loaders)({ projectId, feature: WorkspacePlanFeatures.SavedViews }); if (canUseSavedViews.isErr) return err(canUseSavedViews.error); const ensuredWriteAccess = await ensureImplicitProjectMemberWithWriteAccessFragment(loaders)({ userId, projectId, role: Roles.Stream.Contributor }); if (ensuredWriteAccess.isErr) { if (ensuredWriteAccess.error.code === 'ProjectNotEnoughPermissions') return err(new ProjectNotEnoughPermissionsError({ message: "Your role on this project doesn't give you permission to save views. You need the Can edit or Project owner role." })); return err(ensuredWriteAccess.error); } return ok(); }; //# sourceMappingURL=canCreate.js.map