diff --git a/packages/xpub-faraday/config/authsome-helpers.js b/packages/xpub-faraday/config/authsome-helpers.js new file mode 100644 index 0000000000000000000000000000000000000000..fb41c77335450135b350cd8c3580e23750cf8722 --- /dev/null +++ b/packages/xpub-faraday/config/authsome-helpers.js @@ -0,0 +1,20 @@ +const omit = require('lodash/omit') +const config = require('config') + +const statuses = config.get('statuses') + +const publicStatusesPermissions = ['author', 'reviewer'] + +module.exports = { + parseReviewerAuthors: (coll, matchingCollPerm) => { + if (['reviewer'].includes(matchingCollPerm.permission)) { + coll.authors = coll.authors.map(a => omit(a, ['email'])) + } + }, + setPublicStatuses: (coll, matchingCollPerm) => { + coll.visibleStatus = statuses[coll.status].public + if (!publicStatusesPermissions.includes(matchingCollPerm.permission)) { + coll.visibleStatus = statuses[coll.status].private + } + }, +} diff --git a/packages/xpub-faraday/config/authsome.js b/packages/xpub-faraday/config/authsome.js index 5a31c01fa64572459d0e01c36b7f76cb5c318ac7..9418e830bf2700f23aaccbce52939cb816f23936 100644 --- a/packages/xpub-faraday/config/authsome.js +++ b/packages/xpub-faraday/config/authsome.js @@ -1,9 +1,8 @@ const get = require('lodash/get') const pickBy = require('lodash/pickBy') const omit = require('lodash/omit') -const config = require('config') +const helpers = require('./authsome-helpers') -const statuses = config.get('statuses') async function teamPermissions(user, operation, object, context) { const permissions = ['handlingEditor', 'author', 'reviewer'] const teams = await Promise.all( @@ -20,7 +19,6 @@ async function teamPermissions(user, operation, object, context) { id: team.object.id, permission: team.teamType.permissions, })) - const publicPermissions = ['author', 'reviewer'] if (collectionsPermissions.length > 0) { return { @@ -35,10 +33,8 @@ async function teamPermissions(user, operation, object, context) { if (matchingCollPerm === undefined) { return null } - coll.visibleStatus = statuses[coll.status].public - if (!publicPermissions.includes(matchingCollPerm.permission)) { - coll.visibleStatus = statuses[coll.status].private - } + helpers.setPublicStatuses(coll, matchingCollPerm) + helpers.parseReviewerAuthors(coll, matchingCollPerm) return coll }) .filter(Boolean)