From f97a3e2dafd37bfecfbbfa0dfa02c40ce055b687 Mon Sep 17 00:00:00 2001
From: Alexandru Munteanu <alexandru.munt@gmail.com>
Date: Tue, 17 Jul 2018 09:19:03 +0300
Subject: [PATCH] feat(email-subscription): send user id and remove auth bearer

---
 packages/component-user-manager/src/Users.js   |  1 -
 .../src/routes/users/subscriptions.js          |  6 +++---
 .../UserProfile/EmailNotifications.js          | 18 ++++++++++++++----
 .../components/UserProfile/UserProfilePage.js  |  1 +
 packages/components-faraday/src/redux/users.js |  6 +++++-
 5 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/packages/component-user-manager/src/Users.js b/packages/component-user-manager/src/Users.js
index 8b95b8c82..bae6f9efd 100644
--- a/packages/component-user-manager/src/Users.js
+++ b/packages/component-user-manager/src/Users.js
@@ -154,7 +154,6 @@ const Users = app => {
    */
   app.patch(
     '/api/users/subscriptions',
-    authBearer,
     require('./routes/users/subscriptions')(app.locals.models),
   )
 
diff --git a/packages/component-user-manager/src/routes/users/subscriptions.js b/packages/component-user-manager/src/routes/users/subscriptions.js
index 7633fc64b..eb0aa8eaa 100644
--- a/packages/component-user-manager/src/routes/users/subscriptions.js
+++ b/packages/component-user-manager/src/routes/users/subscriptions.js
@@ -1,14 +1,14 @@
 const { services } = require('pubsweet-component-helper-service')
 
 module.exports = models => async (req, res) => {
-  const { isUnsubscribed } = req.body
+  const { isUnsubscribed, id } = req.body
 
-  if (!services.checkForUndefinedParams(isUnsubscribed))
+  if (!services.checkForUndefinedParams(isUnsubscribed, id))
     return res.status(400).json({ error: 'Missing required params.' })
 
   let user
   try {
-    user = await models.User.find(req.user)
+    user = await models.User.find(id)
     user.isUnsubscribed = isUnsubscribed
     user = await user.save()
 
diff --git a/packages/components-faraday/src/components/UserProfile/EmailNotifications.js b/packages/components-faraday/src/components/UserProfile/EmailNotifications.js
index 7f20c07ec..025b39f98 100644
--- a/packages/components-faraday/src/components/UserProfile/EmailNotifications.js
+++ b/packages/components-faraday/src/components/UserProfile/EmailNotifications.js
@@ -36,23 +36,33 @@ export default compose(
     modalComponent: ConfirmationModal,
   })),
   withHandlers({
-    subscribe: ({ showModal, hideModal, changeEmailSubscription }) => () => {
+    subscribe: ({
+      userId,
+      showModal,
+      hideModal,
+      changeEmailSubscription,
+    }) => () => {
       showModal({
         title: 'Subscribe to emails',
         subtitle: 'Are you sure you want to subscribe to emails?',
         onConfirm: () => {
-          changeEmailSubscription(false)
+          changeEmailSubscription(userId, false)
           hideModal()
         },
         onCancel: hideModal,
       })
     },
-    unsubscribe: ({ showModal, hideModal, changeEmailSubscription }) => () => {
+    unsubscribe: ({
+      userId,
+      showModal,
+      hideModal,
+      changeEmailSubscription,
+    }) => () => {
       showModal({
         title: 'Unsubscribe from emails',
         subtitle: 'Are you sure you want to unsubscribe from emails?',
         onConfirm: () => {
-          changeEmailSubscription(true)
+          changeEmailSubscription(userId, true)
           hideModal()
         },
         onCancel: hideModal,
diff --git a/packages/components-faraday/src/components/UserProfile/UserProfilePage.js b/packages/components-faraday/src/components/UserProfile/UserProfilePage.js
index f45f86e3f..8c95565d6 100644
--- a/packages/components-faraday/src/components/UserProfile/UserProfilePage.js
+++ b/packages/components-faraday/src/components/UserProfile/UserProfilePage.js
@@ -24,6 +24,7 @@ const UserProfilePage = ({ history, user, changeEmailSubscription }) => (
     <EmailNotifications
       changeEmailSubscription={changeEmailSubscription}
       subscribed={!get(user, 'isUnsubscribed')}
+      userId={get(user, 'id')}
     />
     <LinkOrcID id={get(user, 'id')} orcid={get(user, 'orcid')} />
   </Root>
diff --git a/packages/components-faraday/src/redux/users.js b/packages/components-faraday/src/redux/users.js
index 973675ef2..0d530761b 100644
--- a/packages/components-faraday/src/redux/users.js
+++ b/packages/components-faraday/src/redux/users.js
@@ -22,8 +22,12 @@ export const confirmUser = (userId, confirmationToken) => dispatch =>
     return dispatch(loginSuccess(user))
   })
 
-export const changeEmailSubscription = isUnsubscribed => dispatch => {
+export const changeEmailSubscription = (
+  id,
+  isUnsubscribed = false,
+) => dispatch => {
   update(`/users/subscriptions`, {
+    id,
     isUnsubscribed,
   }).then(() => dispatch(actions.getCurrentUser()))
 }
-- 
GitLab