From 1dfb6ef477dba4d0faf4bf86026647f43fb2f5f6 Mon Sep 17 00:00:00 2001 From: lkisme Date: Fri, 24 Feb 2017 22:10:38 +0800 Subject: 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 --- models/users.js | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'models/users.js') 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}}); + } + } + }); } + -- cgit v1.2.3-1-g7c22 From 39f2837838ba30ec02bfe9f33c9fa0dfca05d1a6 Mon Sep 17 00:00:00 2001 From: lkisme Date: Sun, 26 Feb 2017 21:11:15 +0800 Subject: wording change, email sending optimization, add texts to i18n --- models/users.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'models/users.js') diff --git a/models/users.js b/models/users.js index c7db8fff..b77c7a84 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'); + if (Settings.findOne().disableRegistration) throw new Meteor.Error('error-user-notCreated'); const email = username; username = email.substring(0, posAt); const newUserId = Accounts.createUser({ username, email }); @@ -395,8 +395,8 @@ if (Meteor.isServer) { user.isAdmin = true; return user; } - const strict = Settings.findOne().strict; - if (!strict) { + const disableRegistration = Settings.findOne().disableRegistration; + if (!disableRegistration) { return user; } @@ -484,8 +484,8 @@ if (Meteor.isServer) { Users.after.insert((userId, doc) => { //invite user to corresponding boards - const strict = Settings.findOne().strict; - if (strict) { + const disableRegistration = Settings.findOne().disableRegistration; + if (disableRegistration) { const user = Users.findOne(doc._id); const invitationCode = InvitationCodes.findOne({code: user.profile.icode, valid:true}); if (!invitationCode) { -- cgit v1.2.3-1-g7c22