@speckle/shared
Version:
Shared code between various Speckle JS packages
26 lines • 1.06 kB
JavaScript
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