diff --git a/packages/component-user-manager/src/Users.js b/packages/component-user-manager/src/Users.js index 8b95b8c82aef769ce39ab3073bc364a0a5c8fbde..bae6f9efdc8c47d8630f225b098e1bdf2204461e 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 7633fc64b2f1cb011c7e08786d4fa3ac8e15cfde..eb0aa8eaacbfe556eaf0f712171ae0a6456a43a5 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 7f20c07ecc07603373662c5cdf320df56a87a260..025b39f98420336584e02dbbd0e5865204302840 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 f45f86e3fd551d289c8e3b57ecb693238f2422c0..8c95565d6b38efd90cc14183443d9f4aa860fb0f 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 973675ef25bdc0a7ef2f5bd0c0fe76e86fdd9a9b..0d530761bb046d1379a804edcdd1fd160bcafdf2 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())) }