فهرست منبع

Fixed Disable Self-Registration. Added Disable Forgot Password to same Admin Panel page.

Thanks to xet7 !

Fixes #3971,
fixes #2839
Lauri Ojansivu 3 سال پیش
والد
کامیت
b85db43c47

+ 5 - 0
client/components/settings/settingBody.jade

@@ -63,6 +63,11 @@ template(name="webhookSettings")
 
 template(name="general")
   ul#registration-setting.setting-detail
+    li
+      a.flex.js-toggle-forgot-password
+        .materialCheckBox(class="{{#if currentSetting.disableForgotPassword}}is-checked{{/if}}")
+
+        span {{_ 'disable-forgot-password'}}
     li
       a.flex.js-toggle-registration
         .materialCheckBox(class="{{#if currentSetting.disableRegistration}}is-checked{{/if}}")

+ 11 - 0
client/components/settings/settingBody.js

@@ -4,6 +4,7 @@ BlazeComponent.extendComponent({
   onCreated() {
     this.error = new ReactiveVar('');
     this.loading = new ReactiveVar(false);
+    this.forgotPasswordSetting = new ReactiveVar(true);
     this.generalSetting = new ReactiveVar(true);
     this.emailSetting = new ReactiveVar(false);
     this.accountSetting = new ReactiveVar(false);
@@ -56,6 +57,14 @@ BlazeComponent.extendComponent({
       },
     );
   },
+  toggleForgotPassword() {
+    this.setLoading(true);
+    const forgotPasswordClosed = this.currentSetting().disableForgotPassword;
+    Settings.update(Settings.findOne()._id, {
+      $set: { disableForgotPassword: !forgotPasswordClosed },
+    });
+    this.setLoading(false);
+  },
   toggleRegistration() {
     this.setLoading(true);
     const registrationClosed = this.currentSetting().disableRegistration;
@@ -84,6 +93,7 @@ BlazeComponent.extendComponent({
       $('.side-menu li.active').removeClass('active');
       target.parent().addClass('active');
       const targetID = target.data('id');
+      this.forgotPasswordSetting.set('forgot-password-setting' === targetID);
       this.generalSetting.set('registration-setting' === targetID);
       this.emailSetting.set('email-setting' === targetID);
       this.accountSetting.set('account-setting' === targetID);
@@ -267,6 +277,7 @@ BlazeComponent.extendComponent({
   events() {
     return [
       {
+        'click a.js-toggle-forgot-password': this.toggleForgotPassword,
         'click a.js-toggle-registration': this.toggleRegistration,
         'click a.js-toggle-tls': this.toggleTLS,
         'click a.js-setting-menu': this.switchMenu,

+ 31 - 4
config/accounts.js

@@ -1,5 +1,21 @@
 const passwordField = AccountsTemplates.removeField('password');
 const emailField = AccountsTemplates.removeField('email');
+let disableRegistration = true;
+let disableForgotPassword = true;
+
+Meteor.call('getDisableRegistration', (err, data) => {
+  if (!err) {
+    disableRegistration = data;
+    //console.log(data);
+  }
+});
+
+Meteor.call('getDisableForgotPassword', (err, data) => {
+  if (!err) {
+    disableForgotPassword = data;
+    //console.log(data);
+  }
+});
 
 AccountsTemplates.addFields([
   {
@@ -27,7 +43,8 @@ AccountsTemplates.configure({
   confirmPassword: true,
   enablePasswordChange: true,
   sendVerificationEmail: true,
-  showForgotPasswordLink: true,
+  showForgotPasswordLink: !disableForgotPassword,
+  forbidClientAccountCreation: disableRegistration,
   onLogoutHook() {
     const homePage = 'home';
     if (FlowRouter.getRouteName() === homePage) {
@@ -38,11 +55,21 @@ AccountsTemplates.configure({
   },
 });
 
+if (!disableForgotPassword) {
+  [
+    'forgotPwd',
+    'resetPwd',
+  ].forEach(routeName => AccountsTemplates.configureRoute(routeName));
+}
+
+if (!disableRegistration) {
+  [
+    'signUp',
+  ].forEach(routeName => AccountsTemplates.configureRoute(routeName));
+}
+
 [
   'signIn',
-  'signUp',
-  'resetPwd',
-  'forgotPwd',
   'enrollAccount',
 ].forEach(routeName => AccountsTemplates.configureRoute(routeName));
 

+ 1 - 0
i18n/en.i18n.json

@@ -610,6 +610,7 @@
   "people": "People",
   "registration": "Registration",
   "disable-self-registration": "Disable Self-Registration",
+  "disable-forgot-password": "Disable Forgot Password",
   "invite": "Invite",
   "invite-people": "Invite People",
   "to-boards": "To board(s)",

+ 25 - 0
models/settings.js

@@ -12,6 +12,9 @@ Settings.attachSchema(
     disableRegistration: {
       type: Boolean,
     },
+    disableForgotPassword: {
+      type: Boolean,
+    },
     'mailServer.username': {
       type: String,
       optional: true,
@@ -435,6 +438,28 @@ if (Meteor.isServer) {
       }
     },
 
+    getDisableRegistration() {
+      const setting = Settings.findOne({});
+      if (!setting.disableRegistration) {
+        return false;
+      } else {
+        return {
+          disableRegistration: `${setting.disableRegistration}`,
+        };
+      }
+    },
+
+   getDisableForgotPassword() {
+      const setting = Settings.findOne({});
+      if (!setting.disableForgotPassword) {
+        return false;
+      } else {
+        return {
+          disableForgotPassword: `${setting.disableForgotPassword}`,
+        };
+      }
+    },
+
     getMatomoConf() {
       return {
         address: getEnvVar('MATOMO_ADDRESS'),

+ 1 - 0
server/publications/settings.js

@@ -10,6 +10,7 @@ Meteor.publish('setting', () => {
     {
       fields: {
         disableRegistration: 1,
+        disableForgotPassword: 1,
         productName: 1,
         hideLogo: 1,
         customLoginLogoImageUrl: 1,