summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authornztqa <nztqa@users.noreply.github.com>2017-08-07 17:40:50 +0900
committernztqa <nztqa@users.noreply.github.com>2017-08-07 17:40:50 +0900
commit6a10257fd7230d08d9a64fc4877e85972375498d (patch)
tree263bed8ce542bda6f31f09eb521362c76b3c3440 /models
parent57219df16afbc0c512e15ed9801308591b41d318 (diff)
downloadwekan-6a10257fd7230d08d9a64fc4877e85972375498d.tar.gz
wekan-6a10257fd7230d08d9a64fc4877e85972375498d.tar.bz2
wekan-6a10257fd7230d08d9a64fc4877e85972375498d.zip
Add change email address
Set allow email change in admin panel
Diffstat (limited to 'models')
-rw-r--r--models/accountSettings.js33
-rw-r--r--models/users.js22
2 files changed, 55 insertions, 0 deletions
diff --git a/models/accountSettings.js b/models/accountSettings.js
new file mode 100644
index 00000000..db4087c0
--- /dev/null
+++ b/models/accountSettings.js
@@ -0,0 +1,33 @@
+AccountSettings = new Mongo.Collection('accountSettings');
+
+AccountSettings.attachSchema(new SimpleSchema({
+ _id: {
+ type: String,
+ },
+ booleanValue: {
+ type: Boolean,
+ optional: true,
+ },
+ sort: {
+ type: Number,
+ decimal: true,
+ },
+}));
+
+AccountSettings.allow({
+ update(userId) {
+ const user = Users.findOne(userId);
+ return user && user.isAdmin;
+ },
+});
+
+if (Meteor.isServer) {
+ Meteor.startup(() => {
+ AccountSettings.upsert({ _id: 'accounts-allowEmailChange' }, {
+ $setOnInsert: {
+ booleanValue: false,
+ sort: 0,
+ },
+ });
+ });
+}
diff --git a/models/users.js b/models/users.js
index 29504aa8..c2238cde 100644
--- a/models/users.js
+++ b/models/users.js
@@ -334,6 +334,28 @@ Meteor.methods({
check(limit, Number);
Meteor.user().setShowCardsCountAt(limit);
},
+ setEmail(email) {
+ 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, {
+ $set: {
+ emails: [{
+ address: email,
+ verified: false,
+ }],
+ },
+ });
+ }
+ },
+ setUsernameAndEmail(username, email) {
+ check(username, String);
+ check(email, String);
+ Meteor.call('setUsername', username);
+ Meteor.call('setEmail', email);
+ },
});
if (Meteor.isServer) {