From 4b843ba16f31f28b67479bd95630b9d66341fe4c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?=
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
+ "registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
+ "registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
diff --git a/src/controllers/index.js b/src/controllers/index.js
index 30fe85ce04..f304b4d840 100644
--- a/src/controllers/index.js
+++ b/src/controllers/index.js
@@ -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;
diff --git a/src/middleware/header.js b/src/middleware/header.js
index 8e26934560..3c14793b78 100644
--- a/src/middleware/header.js
+++ b/src/middleware/header.js
@@ -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'),
diff --git a/src/upgrades/1.12.3/update_registration_type.js b/src/upgrades/1.12.3/update_registration_type.js
new file mode 100644
index 0000000000..431189ebc2
--- /dev/null
+++ b/src/upgrades/1.12.3/update_registration_type.js
@@ -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);
+ }
+ },
+};
diff --git a/src/user/approval.js b/src/user/approval.js
index dd319485d8..32df3fcf85 100644
--- a/src/user/approval.js
+++ b/src/user/approval.js
@@ -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);
}
};
diff --git a/src/views/admin/settings/user.tpl b/src/views/admin/settings/user.tpl
index 874e55eb60..45edc8f5a5 100644
--- a/src/views/admin/settings/user.tpl
+++ b/src/views/admin/settings/user.tpl
@@ -167,8 +167,6 @@
+ [[admin/settings/user:registration-approval-type.help, {config.relative_path}]] +
+