summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/settings.js20
-rw-r--r--models/users.js60
2 files changed, 47 insertions, 33 deletions
diff --git a/models/settings.js b/models/settings.js
index 0e6ab762..0c2da4d3 100644
--- a/models/settings.js
+++ b/models/settings.js
@@ -35,6 +35,9 @@ Settings.attachSchema(new SimpleSchema({
}));
Settings.helpers({
mailUrl () {
+ if (!this.mailServer.host) {
+ return null;
+ }
if (!this.mailServer.username && !this.mailServer.password) {
return `smtp://${this.mailServer.host}:${this.mailServer.port}/`;
}
@@ -69,7 +72,7 @@ if (Meteor.isServer) {
});
Settings.after.update((userId, doc, fieldNames) => {
// assign new values to mail-from & MAIL_URL in environment
- if (_.contains(fieldNames, 'mailServer')) {
+ if (_.contains(fieldNames, 'mailServer') && _.contains(fieldNames, 'host')) {
if (!doc.mailServer.username && !doc.mailServer.password) {
process.env.MAIL_URL = `smtp://${doc.mailServer.host}:${doc.mailServer.port}/`;
} else {
@@ -97,13 +100,16 @@ if (Meteor.isServer) {
url: FlowRouter.url('sign-up'),
};
const lang = author.getLanguage();
- Email.send({
- to: icode.email,
- from: Accounts.emailTemplates.from,
- subject: TAPi18n.__('email-invite-register-subject', params, lang),
- text: TAPi18n.__('email-invite-register-text', params, lang),
- });
+ if (Settings.findOne().mailUrl()) {
+ Email.send({
+ to: icode.email,
+ from: Accounts.emailTemplates.from,
+ subject: TAPi18n.__('email-invite-register-subject', params, lang),
+ text: TAPi18n.__('email-invite-register-text', params, lang),
+ });
+ }
} catch (e) {
+ InvitationCodes.remove(_id);
throw new Meteor.Error('email-fail', e.message);
}
}
diff --git a/models/users.js b/models/users.js
index f062df9d..edf1a203 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,
@@ -379,24 +383,25 @@ if (Meteor.isServer) {
board.addMember(user._id);
user.addInvite(boardId);
- try {
- const params = {
- user: user.username,
- inviter: inviter.username,
- board: board.title,
- url: board.absoluteUrl(),
- };
- const lang = user.getLanguage();
- Email.send({
- to: user.emails[0].address.toLowerCase(),
- from: Accounts.emailTemplates.from,
- subject: TAPi18n.__('email-invite-subject', params, lang),
- text: TAPi18n.__('email-invite-text', params, lang),
- });
- } catch (e) {
- throw new Meteor.Error('email-fail', e.message);
+ if (Settings.findOne().mailUrl()) {
+ try {
+ const params = {
+ user: user.username,
+ inviter: inviter.username,
+ board: board.title,
+ url: board.absoluteUrl(),
+ };
+ const lang = user.getLanguage();
+ Email.send({
+ to: user.emails[0].address.toLowerCase(),
+ from: Accounts.emailTemplates.from,
+ subject: TAPi18n.__('email-invite-subject', params, lang),
+ text: TAPi18n.__('email-invite-text', params, lang),
+ });
+ } catch (e) {
+ throw new Meteor.Error('email-fail', e.message);
+ }
}
-
return { username: user.username, email: user.emails[0].address };
},
});
@@ -411,11 +416,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};
}
@@ -497,19 +503,21 @@ 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}});
}
}
});
}
-