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

Thanks to xet7 !

Fixes #3971,
fixes #2839
This commit is contained in:
Lauri Ojansivu 2022-02-26 01:29:40 +02:00
parent 9ca8d78514
commit b85db43c47
6 changed files with 74 additions and 4 deletions

View file

@ -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}}")

View file

@ -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,

View file

@ -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));

View file

@ -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)",

View file

@ -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'),

View file

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