diff options
author | lkisme <lkisme@me.com> | 2017-03-28 00:48:18 +0800 |
---|---|---|
committer | lkisme <lkisme@me.com> | 2017-03-28 00:48:18 +0800 |
commit | f82941550ac469554bc97ea9e1f4c49c6e0ddf27 (patch) | |
tree | 4de0a9727ed80d95a770d55c6c56a01f340b9a24 /models/users.js | |
parent | feafc46bb5bc336da8d091cc7a0e8e4fc3c3e4f1 (diff) | |
download | wekan-f82941550ac469554bc97ea9e1f4c49c6e0ddf27.tar.gz wekan-f82941550ac469554bc97ea9e1f4c49c6e0ddf27.tar.bz2 wekan-f82941550ac469554bc97ea9e1f4c49c6e0ddf27.zip |
Remove invitation code if email sending failed, improve registration process with invitation
Diffstat (limited to 'models/users.js')
-rw-r--r-- | models/users.js | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/models/users.js b/models/users.js index 06b84fa0..cdc4d9dc 100644 --- a/models/users.js +++ b/models/users.js @@ -91,6 +91,10 @@ Users.attachSchema(new SimpleSchema({ type: [String], optional: true, }, + 'profile.icode': { + type: String, + optional: true, + }, services: { type: Object, optional: true, @@ -401,11 +405,12 @@ if (Meteor.isServer) { return user; } - const iCode = options.profile.invitationcode | ''; - - const invitationCode = InvitationCodes.findOne({code: iCode, valid:true}); + if (!options || !options.profile) { + throw new Meteor.Error('error-invitation-code-blank', 'The invitation code is required'); + } + const invitationCode = InvitationCodes.findOne({code: options.profile.invitationcode, email: options.email, valid: true}); if (!invitationCode) { - throw new Meteor.Error('error-invitation-code-not-exist'); + throw new Meteor.Error('error-invitation-code-not-exist', 'The invitation code doesn\'t exist'); }else{ user.profile = {icode: options.profile.invitationcode}; } @@ -487,16 +492,19 @@ if (Meteor.isServer) { //invite user to corresponding boards const disableRegistration = Settings.findOne().disableRegistration; if (disableRegistration) { - const user = Users.findOne(doc._id); - const invitationCode = InvitationCodes.findOne({code: user.profile.icode, valid:true}); + const invitationCode = InvitationCodes.findOne({code: doc.profile.icode, valid:true}); if (!invitationCode) { - throw new Meteor.Error('error-user-notCreated'); + throw new Meteor.Error('error-invitation-code-not-exist'); }else{ invitationCode.boardsToBeInvited.forEach((boardId) => { const board = Boards.findOne(boardId); board.addMember(doc._id); }); - user.profile = {invitedBoards: invitationCode.boardsToBeInvited}; + if (!doc.profile) { + doc.profile = {}; + } + doc.profile.invitedBoards = invitationCode.boardsToBeInvited; + Users.update(doc._id, {$set:{profile: doc.profile}}); InvitationCodes.update(invitationCode._id, {$set: {valid:false}}); } } |