From e3b7f85cc35b650e72259909608237ea0347a7fb Mon Sep 17 00:00:00 2001 From: Thuan Pham Quoc Date: Wed, 8 Nov 2017 11:34:05 +0700 Subject: [PATCH] Updated users methods to get user id from client on updating user data, is aimed to support admin update other user profile --- client/components/users/userHeader.js | 10 +++++----- models/users.js | 15 ++++++++------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 90205ee14..481b13c34 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -42,7 +42,7 @@ Template.editProfilePopup.events({ isChangeUserName = username !== Meteor.user().username; isChangeEmail = email.toLowerCase() !== Meteor.user().emails[0].address.toLowerCase(); if (isChangeUserName && isChangeEmail) { - Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), function(error) { + Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), Meteor.userId(), function (error) { const usernameMessageElement = tpl.$('.username-taken'); const emailMessageElement = tpl.$('.email-taken'); if (error) { @@ -61,7 +61,7 @@ Template.editProfilePopup.events({ } }); } else if (isChangeUserName) { - Meteor.call('setUsername', username, function(error) { + Meteor.call('setUsername', username, Meteor.userId(), function (error) { const messageElement = tpl.$('.username-taken'); if (error) { messageElement.show(); @@ -71,7 +71,7 @@ Template.editProfilePopup.events({ } }); } else if (isChangeEmail) { - Meteor.call('setEmail', email.toLowerCase(), function(error) { + Meteor.call('setEmail', email.toLowerCase(), Meteor.userId(), function (error) { const messageElement = tpl.$('.email-taken'); if (error) { messageElement.show(); @@ -105,7 +105,7 @@ Template.editNotificationPopup.events({ // XXX For some reason the useraccounts autofocus isnt working in this case. // See https://github.com/meteor-useraccounts/core/issues/384 -Template.changePasswordPopup.onRendered(function() { +Template.changePasswordPopup.onRendered(function () { this.find('#at-field-current_password').focus(); }); @@ -116,7 +116,7 @@ Template.changeLanguagePopup.helpers({ tag: code, name: lang.name === 'br' ? 'Brezhoneg' : lang.name, }; - }).sort(function(a, b) { + }).sort(function (a, b) { if (a.name === b.name) { return 0; } else { diff --git a/models/users.js b/models/users.js index abc0f82d9..a41060230 100644 --- a/models/users.js +++ b/models/users.js @@ -325,13 +325,13 @@ Users.mutations({ }); Meteor.methods({ - setUsername(username) { + setUsername(username, userId) { check(username, String); const nUsersWithUsername = Users.find({ username }).count(); if (nUsersWithUsername > 0) { throw new Meteor.Error('username-already-taken'); } else { - Users.update(this.userId, { $set: { username } }); + Users.update(userId, {$set: {username}}); } }, toggleSystemMessages() { @@ -342,13 +342,13 @@ Meteor.methods({ check(limit, Number); Meteor.user().setShowCardsCountAt(limit); }, - setEmail(email) { + setEmail(email, userId) { check(email, String); const existingUser = Users.findOne({ 'emails.address': email }, { fields: { _id: 1 } }); if (existingUser) { throw new Meteor.Error('email-already-taken'); } else { - Users.update(this.userId, { + Users.update(userId, { $set: { emails: [{ address: email, @@ -358,11 +358,12 @@ Meteor.methods({ }); } }, - setUsernameAndEmail(username, email) { + setUsernameAndEmail(username, email, userId) { check(username, String); check(email, String); - Meteor.call('setUsername', username); - Meteor.call('setEmail', email); + check(userId, String); + Meteor.call('setUsername', username, userId); + Meteor.call('setEmail', email, userId); }, });