UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

26 lines 1.06 kB
import { err, ok } from 'true-myth/result'; import { ProjectNoAccessError, ProjectNotFoundError } from '../../domain/authErrors.js'; import { canUpdateProjectPolicy } from './canUpdate.js'; import { ProjectVisibility } from '../../domain/projects/types.js'; export const canUpdateProjectAllowPublicCommentsPolicy = (loaders) => async ({ userId, projectId }) => { // Invoke full canUpdate policy, that's still the base const canUpdate = await canUpdateProjectPolicy(loaders)({ userId, projectId }); if (canUpdate.isErr) { return err(canUpdate.error); } // Project must also be publicly visible const project = await loaders.getProject({ projectId }); if (!project) { return err(new ProjectNotFoundError()); } const isPublic = project.visibility === ProjectVisibility.Public; return isPublic ? ok() : err(new ProjectNoAccessError({ message: 'Project must be public to allow public comments' })); }; //# sourceMappingURL=canUpdateAllowPublicComments.js.map