summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2019-08-20 19:16:44 +0300
committerLauri Ojansivu <x@xet7.org>2019-08-20 19:16:44 +0300
commit6e12e2fa595c0dd4ce080eb27e9a48585df51736 (patch)
treeaa654d8579765c811d20445a1b6e7a85a89889e8
parenta31ece0974247c79427be7ec6be5bf68b66f2f69 (diff)
downloadwekan-6e12e2fa595c0dd4ce080eb27e9a48585df51736.tar.gz
wekan-6e12e2fa595c0dd4ce080eb27e9a48585df51736.tar.bz2
wekan-6e12e2fa595c0dd4ce080eb27e9a48585df51736.zip
[Fix: Some users cannot switch views or languages](https://github.com/wekan/wekan/issues/2630).
Thanks to xet7 and justinr1234.
-rw-r--r--models/users.js19
1 files changed, 16 insertions, 3 deletions
diff --git a/models/users.js b/models/users.js
index 1adb4a57..dc286128 100644
--- a/models/users.js
+++ b/models/users.js
@@ -257,10 +257,23 @@ Users.attachSchema(
}),
);
+Users.before.update(function(userId, fieldNames) {
+ const user = Users.findOne({ _id: userId });
+ if (user && user.isAdmin || Meteor.user() && Meteor.user().isAdmin) { return true; }
+ if (!user) { return false; }
+ if (_.contains(fieldNames, 'services')) { return false; }
+ if (_.contains(fieldNames, 'heartBeat')) { return false; }
+ if (_.contains(fieldNames, 'isAdmin')) { return false; }
+ if (_.contains(fieldNames, 'loginDisabled')) { return false; }
+ if (_.contains(fieldNames, 'authenticationMethod')) { return false; }
+});
+
Users.allow({
- update(userId) {
- const user = Users.findOne(userId);
- return user && Meteor.user().isAdmin; // GitHub issue #2590
+ update(userId, doc) {
+ const user = Users.findOne({ _id: userId });
+ if (user && user.isAdmin || Meteor.user() && Meteor.user().isAdmin) return true;
+ if (!user) { return false; }
+ return doc._id === userId;
},
remove(userId, doc) {
const adminsNumber = Users.find({ isAdmin: true }).count();