fix: #7567, allow invite and approval at the same time

This commit is contained in:
Barış Soner Uşaklı
2019-06-04 11:10:20 -04:00
parent a097b19293
commit 4b843ba16f
9 changed files with 49 additions and 20 deletions

View File

@@ -100,7 +100,6 @@ Controllers.login = function (req, res, next) {
var data = {};
var loginStrategies = require('../routes/authentication').getLoginStrategies();
var registrationType = meta.config.registrationType || 'normal';
var allowLoginWith = (meta.config.allowLoginWith || 'username-email');
var returnTo = (req.headers['x-return-to'] || '').replace(nconf.get('base_url') + nconf.get('relative_path'), '');
@@ -117,7 +116,7 @@ Controllers.login = function (req, res, next) {
data.alternate_logins = loginStrategies.length > 0;
data.authentication = loginStrategies;
data.allowRegistration = registrationType === 'normal' || registrationType === 'admin-approval' || registrationType === 'admin-approval-ip';
data.allowRegistration = registrationType === 'normal';
data.allowLoginWith = '[[login:' + allowLoginWith + ']]';
data.breadcrumbs = helpers.buildBreadcrumbs([{
text: '[[global:login]]',
@@ -159,7 +158,7 @@ Controllers.register = function (req, res, next) {
var registrationType = meta.config.registrationType || 'normal';
if (registrationType === 'disabled') {
return next();
return setImmediate(next);
}
var errorText;

View File

@@ -63,7 +63,7 @@ module.exports = function (middleware) {
'brand:logo:url': meta.config['brand:logo:url'] || '',
'brand:logo:alt': meta.config['brand:logo:alt'] || '',
'brand:logo:display': meta.config['brand:logo'] ? '' : 'hide',
allowRegistration: registrationType === 'normal' || registrationType === 'admin-approval' || registrationType === 'admin-approval-ip',
allowRegistration: registrationType === 'normal',
searchEnabled: plugins.hasListeners('filter:search.query'),
config: res.locals.config,
relative_path: nconf.get('relative_path'),

View File

@@ -0,0 +1,20 @@
'use strict';
var db = require('../../database');
module.exports = {
name: 'Update registration type',
timestamp: Date.UTC(2019, 5, 4),
method: function (callback) {
const meta = require('../../meta');
const registrationType = meta.config.registrationType || 'normal';
if (registrationType === 'admin-approval' || registrationType === 'admin-approval-ip') {
db.setObject('config', {
registrationType: 'normal',
registrationApprovalType: registrationType,
}, callback);
} else {
setImmediate(callback);
}
},
};

View File

@@ -163,15 +163,15 @@ module.exports = function (User) {
}
User.shouldQueueUser = function (ip, callback) {
var registrationType = meta.config.registrationType || 'normal';
if (registrationType === 'normal' || registrationType === 'invite-only' || registrationType === 'admin-invite-only') {
setImmediate(callback, null, false);
} else if (registrationType === 'admin-approval') {
const registrationApprovalType = meta.config.registrationApprovalType;
if (registrationApprovalType === 'admin-approval') {
setImmediate(callback, null, true);
} else if (registrationType === 'admin-approval-ip') {
} else if (registrationApprovalType === 'admin-approval-ip') {
db.sortedSetCard('ip:' + ip + ':uid', function (err, count) {
callback(err, !!count);
});
} else {
setImmediate(callback, null, false);
}
};

View File

@@ -167,8 +167,6 @@
<label>[[admin/settings/user:registration-type]]</label>
<select class="form-control" data-field="registrationType">
<option value="normal">[[admin/settings/user:registration-type.normal]]</option>
<option value="admin-approval">[[admin/settings/user:registration-type.admin-approval]]</option>
<option value="admin-approval-ip">[[admin/settings/user:registration-type.admin-approval-ip]]</option>
<option value="invite-only">[[admin/settings/user:registration-type.invite-only]]</option>
<option value="admin-invite-only">[[admin/settings/user:registration-type.admin-invite-only]]</option>
<option value="disabled">[[admin/settings/user:registration-type.disabled]]</option>
@@ -177,6 +175,17 @@
[[admin/settings/user:registration-type.help, {config.relative_path}]]
</p>
</div>
<div class="form-group">
<label>[[admin/settings/user:registration-approval-type]]</label>
<select class="form-control" data-field="registrationApprovalType">
<option value="normal">[[admin/settings/user:registration-type.normal]]</option>
<option value="admin-approval">[[admin/settings/user:registration-type.admin-approval]]</option>
<option value="admin-approval-ip">[[admin/settings/user:registration-type.admin-approval-ip]]</option>
</select>
<p class="help-block">
[[admin/settings/user:registration-approval-type.help, {config.relative_path}]]
</p>
</div>
<div class="form-group">
<label>[[admin/settings/user:max-invites]]</label>
<input type="number" class="form-control" data-field="maximumInvites" placeholder="0">