From 3ee0ab92e269b90a0c4ebd84e8ee1a8f7a290e61 Mon Sep 17 00:00:00 2001
From: Bogdan Cochior <bogdan.cochior@thinslices.com>
Date: Thu, 19 Apr 2018 15:55:16 +0300
Subject: [PATCH] feat(tooltip): filter author emails for reviewers

---
 .../xpub-faraday/config/authsome-helpers.js   | 20 +++++++++++++++++++
 packages/xpub-faraday/config/authsome.js      | 10 +++-------
 2 files changed, 23 insertions(+), 7 deletions(-)
 create mode 100644 packages/xpub-faraday/config/authsome-helpers.js

diff --git a/packages/xpub-faraday/config/authsome-helpers.js b/packages/xpub-faraday/config/authsome-helpers.js
new file mode 100644
index 000000000..fb41c7733
--- /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 5a31c01fa..9418e830b 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)
-- 
GitLab