diff options
author | lkisme <lkisme@me.com> | 2017-02-24 22:10:38 +0800 |
---|---|---|
committer | lkisme <lkisme@me.com> | 2017-02-24 22:10:38 +0800 |
commit | 1dfb6ef477dba4d0faf4bf86026647f43fb2f5f6 (patch) | |
tree | 2c97395901ac5789975a65d5efc6eaf0e37c1e5d /models/users.js | |
parent | 29fdfb9c886f1a906a27398fd546ad6cdb929ff9 (diff) | |
download | wekan-1dfb6ef477dba4d0faf4bf86026647f43fb2f5f6.tar.gz wekan-1dfb6ef477dba4d0faf4bf86026647f43fb2f5f6.tar.bz2 wekan-1dfb6ef477dba4d0faf4bf86026647f43fb2f5f6.zip |
Admin panel:
Only invited user can register in strict mode,
Set mail server in admin panel,
Switch strict mode in admin panel,
Invite people to system in admin panel
Diffstat (limited to 'models/users.js')
-rw-r--r-- | models/users.js | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/models/users.js b/models/users.js index 58513231..c7db8fff 100644 --- a/models/users.js +++ b/models/users.js @@ -348,7 +348,7 @@ if (Meteor.isServer) { if (user._id === inviter._id) throw new Meteor.Error('error-user-notAllowSelf'); } else { if (posAt <= 0) throw new Meteor.Error('error-user-doesNotExist'); - + if (Settings.findOne().strict) throw new Meteor.Error('error-user-notCreated'); const email = username; username = email.substring(0, posAt); const newUserId = Accounts.createUser({ username, email }); @@ -389,6 +389,28 @@ if (Meteor.isServer) { return { username: user.username, email: user.emails[0].address }; }, }); + Accounts.onCreateUser((options, user) => { + const userCount = Users.find().count(); + if (userCount === 0){ + user.isAdmin = true; + return user; + } + const strict = Settings.findOne().strict; + if (!strict) { + return user; + } + + const iCode = options.profile.invitationcode | ''; + + const invitationCode = InvitationCodes.findOne({code: iCode, valid:true}); + if (!invitationCode) { + throw new Meteor.Error('error-invitation-code-not-exist'); + }else{ + user.profile = {icode: options.profile.invitationcode}; + } + + return user; + }); } if (Meteor.isServer) { @@ -458,4 +480,25 @@ if (Meteor.isServer) { }); }); } + + Users.after.insert((userId, doc) => { + + //invite user to corresponding boards + const strict = Settings.findOne().strict; + if (strict) { + const user = Users.findOne(doc._id); + const invitationCode = InvitationCodes.findOne({code: user.profile.icode, valid:true}); + if (!invitationCode) { + throw new Meteor.Error('error-user-notCreated'); + }else{ + invitationCode.boardsToBeInvited.forEach((boardId) => { + const board = Boards.findOne(boardId); + board.addMember(doc._id); + }); + user.profile = {invitedBoards: invitationCode.boardsToBeInvited}; + InvitationCodes.update(invitationCode._id, {$set: {valid:false}}); + } + } + }); } + |