UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

31 lines 1.24 kB
import { err, ok } from 'true-myth/result'; import { checkIfPubliclyReadableProjectFragment, ensureImplicitProjectMemberWithReadAccessFragment } from '../../fragments/projects.js'; import { ensureMinimumServerRoleFragment } from '../../fragments/server.js'; export const canBroadcastProjectActivityPolicy = (loaders) => async ({ userId, projectId }) => { // Ensure logged in const ensuredServerRole = await ensureMinimumServerRoleFragment(loaders)({ userId }); if (ensuredServerRole.isErr) { return err(ensuredServerRole.error); } // If publicly readable - any authed user can broadcast const isPubliclyReadable = await checkIfPubliclyReadableProjectFragment(loaders)({ projectId }); if (isPubliclyReadable.isErr) { return err(isPubliclyReadable.error); } if (isPubliclyReadable.value) return ok(); // Not public. Ensure user has at least implicit membership & read access const hasReadAccess = await ensureImplicitProjectMemberWithReadAccessFragment(loaders)({ userId, projectId }); if (hasReadAccess.isErr) { return err(hasReadAccess.error); } return ok(); }; //# sourceMappingURL=canBroadcastActivity.js.map