|
@@ -124,20 +124,33 @@ if (Meteor.isServer) {
|
|
sendInvitation(emails, boards) {
|
|
sendInvitation(emails, boards) {
|
|
check(emails, [String]);
|
|
check(emails, [String]);
|
|
check(boards, [String]);
|
|
check(boards, [String]);
|
|
|
|
+
|
|
const user = Users.findOne(Meteor.userId());
|
|
const user = Users.findOne(Meteor.userId());
|
|
if(!user.isAdmin){
|
|
if(!user.isAdmin){
|
|
throw new Meteor.Error('not-allowed');
|
|
throw new Meteor.Error('not-allowed');
|
|
}
|
|
}
|
|
emails.forEach((email) => {
|
|
emails.forEach((email) => {
|
|
if (email && SimpleSchema.RegEx.Email.test(email)) {
|
|
if (email && SimpleSchema.RegEx.Email.test(email)) {
|
|
- const code = getRandomNum(100000, 999999);
|
|
|
|
- InvitationCodes.insert({code, email, boardsToBeInvited: boards, createdAt: new Date(), authorId: Meteor.userId()}, function(err, _id){
|
|
|
|
- if (!err && _id) {
|
|
|
|
- sendInvitationEmail(_id);
|
|
|
|
- } else {
|
|
|
|
- throw new Meteor.Error('invitation-generated-fail', err.message);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
|
|
+ // Checks if the email is already link to an account.
|
|
|
|
+ const userExist = Users.findOne({email});
|
|
|
|
+ if (userExist){
|
|
|
|
+ throw new Meteor.Error('user-exist', `The user with the email ${email} has already an account.`);
|
|
|
|
+ }
|
|
|
|
+ // Checks if the email is already link to an invitation.
|
|
|
|
+ const invitation = InvitationCodes.findOne({email});
|
|
|
|
+ if (invitation){
|
|
|
|
+ InvitationCodes.update(invitation, {$set : {boardsToBeInvited: boards}});
|
|
|
|
+ sendInvitationEmail(invitation._id);
|
|
|
|
+ }else {
|
|
|
|
+ const code = getRandomNum(100000, 999999);
|
|
|
|
+ InvitationCodes.insert({code, email, boardsToBeInvited: boards, createdAt: new Date(), authorId: Meteor.userId()}, function(err, _id){
|
|
|
|
+ if (!err && _id) {
|
|
|
|
+ sendInvitationEmail(_id);
|
|
|
|
+ } else {
|
|
|
|
+ throw new Meteor.Error('invitation-generated-fail', err.message);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|