From dfeeec308ac2c683cd3fc3f43f65efe71072af54 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Sat, 1 Apr 2017 21:46:09 +0200 Subject: Fix email settings loading: MAIL_URL was overriden with database info all the time. Now if MAIL_URL exists is not overwritten and if neither MAIL_URL nor exists valid admin panel data MAIL_URL is not set. MAIL_FROM was ignored. Same behaviour, env variable has bigger priority than database configuration. On both cases, althrought environment variable is set, updating admin-panel mail settings will load new info and ignore the environment variable. Remove some code that is not needed anymore --- config/accounts.js | 7 +------ models/settings.js | 24 ++++++++++++------------ models/users.js | 34 ++++++++++++++++------------------ server/notifications/email.js | 20 +++++++++----------- 4 files changed, 38 insertions(+), 47 deletions(-) diff --git a/config/accounts.js b/config/accounts.js index 279325fb..e7faa4cd 100644 --- a/config/accounts.js +++ b/config/accounts.js @@ -16,17 +16,12 @@ AccountsTemplates.addFields([{ template: 'invitationCode', }]); -let sendVerificationEmail = false; -if (process.env.MAIL_URL) { - sendVerificationEmail = true; -} - AccountsTemplates.configure({ defaultLayout: 'userFormsLayout', defaultContentRegion: 'content', confirmPassword: false, enablePasswordChange: true, - sendVerificationEmail, + sendVerificationEmail: true, showForgotPasswordLink: true, onLogoutHook() { const homePage = 'home'; diff --git a/models/settings.js b/models/settings.js index e5b9783a..e9dce26d 100644 --- a/models/settings.js +++ b/models/settings.js @@ -27,7 +27,6 @@ Settings.attachSchema(new SimpleSchema({ 'mailServer.from': { type: String, optional: true, - defaultValue: 'Wekan', }, createdAt: { type: Date, @@ -66,14 +65,17 @@ if (Meteor.isServer) { const setting = Settings.findOne({}); if(!setting){ const now = new Date(); + const domain = process.env.ROOT_URL.match(/\/\/(?:www\.)?(.*)?(?:\/)?/)[1]; + const from = `Wekan `; const defaultSetting = {disableRegistration: false, mailServer: { - username: '', password: '', host: '', port: '', enableTLS: false, from: '', + username: '', password: '', host: '', port: '', enableTLS: false, from, }, createdAt: now, modifiedAt: now}; Settings.insert(defaultSetting); } const newSetting = Settings.findOne(); - process.env.MAIL_URL = newSetting.mailUrl(); - Accounts.emailTemplates.from = newSetting.mailServer.from; + if (!process.env.MAIL_URL && newSetting.mailUrl()) + process.env.MAIL_URL = newSetting.mailUrl(); + Accounts.emailTemplates.from = process.env.MAIL_FROM ? process.env.MAIL_FROM : newSetting.mailServer.from; }); Settings.after.update((userId, doc, fieldNames) => { // assign new values to mail-from & MAIL_URL in environment @@ -106,14 +108,12 @@ if (Meteor.isServer) { url: FlowRouter.url('sign-up'), }; const lang = author.getLanguage(); - 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), - }); - } + 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 edf1a203..7b484f92 100644 --- a/models/users.js +++ b/models/users.js @@ -383,24 +383,22 @@ if (Meteor.isServer) { board.addMember(user._id); user.addInvite(boardId); - 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); - } + 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 }; }, diff --git a/server/notifications/email.js b/server/notifications/email.js index cee874d9..2af6381e 100644 --- a/server/notifications/email.js +++ b/server/notifications/email.js @@ -26,17 +26,15 @@ Meteor.startup(() => { const text = texts.join('\n\n'); user.clearEmailBuffer(); - if (Settings.findOne().mailUrl()) { - try { - Email.send({ - to: user.emails[0].address.toLowerCase(), - from: Accounts.emailTemplates.from, - subject: TAPi18n.__('act-activity-notify', {}, user.getLanguage()), - text, - }); - } catch (e) { - return; - } + try { + Email.send({ + to: user.emails[0].address.toLowerCase(), + from: Accounts.emailTemplates.from, + subject: TAPi18n.__('act-activity-notify', {}, user.getLanguage()), + text, + }); + } catch (e) { + return; } }, 30000); }); -- cgit v1.2.3-1-g7c22