فهرست منبع

Set mail-from to environment immediately after changed,
allow user set a blank username&password pair in SMTP setting.

lkisme 8 سال پیش
والد
کامیت
72c3651be4
2فایلهای تغییر یافته به همراه22 افزوده شده و 5 حذف شده
  1. 2 2
      client/components/settings/settingBody.js
  2. 20 3
      models/settings.js

+ 2 - 2
client/components/settings/settingBody.js

@@ -103,8 +103,8 @@ BlazeComponent.extendComponent({
     try{
       const host = this.checkField('#mail-server-host');
       const port = this.checkField('#mail-server-port');
-      const username = this.checkField('#mail-server-username');
-      const password = this.checkField('#mail-server-password');
+      const username = $('#mail-server-username').val().trim();
+      const password = $('#mail-server-password').val().trim();
       const from = this.checkField('#mail-server-from');
       Settings.update(Settings.findOne()._id, {$set:{'mailServer.host':host, 'mailServer.port': port, 'mailServer.username': username,
           'mailServer.password': password, 'mailServer.from': from}});

+ 20 - 3
models/settings.js

@@ -35,8 +35,10 @@ Settings.attachSchema(new SimpleSchema({
 }));
 Settings.helpers({
   mailUrl () {
-    const mailUrl = `smtp://${this.mailServer.username}:${this.mailServer.password}@${this.mailServer.host}:${this.mailServer.port}/`;
-    return mailUrl;
+    if (!this.mailServer.username && !this.mailServer.password) {
+      return `smtp://${this.mailServer.host}:${this.mailServer.port}/`;
+    }
+    return `smtp://${this.mailServer.username}:${this.mailServer.password}@${this.mailServer.host}:${this.mailServer.port}/`;
   },
 });
 Settings.allow({
@@ -65,6 +67,17 @@ if (Meteor.isServer) {
     process.env.MAIL_URL = newSetting.mailUrl();
     Accounts.emailTemplates.from = newSetting.mailServer.from;
   });
+  Settings.after.update((userId, doc, fieldNames) => {
+    // assign new values to mail-from & MAIL_URL in environment
+    if (_.contains(fieldNames, 'mailServer')) {
+      if (!doc.mailServer.username && !doc.mailServer.password) {
+        process.env.MAIL_URL = `smtp://${doc.mailServer.host}:${doc.mailServer.port}/`;
+      } else {
+        process.env.MAIL_URL = `smtp://${doc.mailServer.username}:${doc.mailServer.password}@${doc.mailServer.host}:${doc.mailServer.port}/`;
+      }
+      Accounts.emailTemplates.from = doc.mailServer.from;
+    }
+  });
 
   function getRandomNum (min, max) {
     const range = max - min;
@@ -107,7 +120,11 @@ if (Meteor.isServer) {
         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);
+            if (!err && _id) {
+              sendInvitationEmail(_id);
+            } else {
+              throw new Meteor.Error('invitation-generated-fail', err.message);
+            }
           });
         }
       });