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