mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-08-26 18:37:35 +02:00
* WIP * reset groups cache after every suite
This commit is contained in:
committed by
GitHub
parent
bf7523b8e4
commit
77beaf2e15
@@ -14,7 +14,7 @@ var plugins = require('../plugins');
|
||||
var utils = require('../utils');
|
||||
var translator = require('../translator');
|
||||
var helpers = require('./helpers');
|
||||
|
||||
var privileges = require('../privileges');
|
||||
var sockets = require('../socket.io');
|
||||
|
||||
var authenticationController = module.exports;
|
||||
@@ -404,6 +404,9 @@ authenticationController.localLogin = function (req, username, password, next) {
|
||||
banned: function (next) {
|
||||
user.isBanned(uid, next);
|
||||
},
|
||||
hasLoginPrivilege: function (next) {
|
||||
privileges.global.can('local:login', uid, next);
|
||||
},
|
||||
}, next);
|
||||
},
|
||||
function (result, next) {
|
||||
@@ -412,7 +415,7 @@ authenticationController.localLogin = function (req, username, password, next) {
|
||||
isAdminOrGlobalMod: result.isAdminOrGlobalMod,
|
||||
});
|
||||
|
||||
if (!result.isAdminOrGlobalMod && parseInt(meta.config.allowLocalLogin, 10) === 0) {
|
||||
if (parseInt(uid, 10) && !result.hasLoginPrivilege) {
|
||||
return next(new Error('[[error:local-login-disabled]]'));
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ var validator = require('validator');
|
||||
var meta = require('../meta');
|
||||
var user = require('../user');
|
||||
var plugins = require('../plugins');
|
||||
var privileges = require('../privileges');
|
||||
var helpers = require('./helpers');
|
||||
|
||||
var Controllers = module.exports;
|
||||
@@ -106,7 +107,6 @@ Controllers.login = function (req, res, next) {
|
||||
|
||||
data.alternate_logins = loginStrategies.length > 0;
|
||||
data.authentication = loginStrategies;
|
||||
data.allowLocalLogin = parseInt(meta.config.allowLocalLogin, 10) === 1 || parseInt(req.query.local, 10) === 1;
|
||||
data.allowRegistration = registrationType === 'normal' || registrationType === 'admin-approval' || registrationType === 'admin-approval-ip';
|
||||
data.allowLoginWith = '[[login:' + allowLoginWith + ']]';
|
||||
data.breadcrumbs = helpers.buildBreadcrumbs([{
|
||||
@@ -115,26 +115,33 @@ Controllers.login = function (req, res, next) {
|
||||
data.error = req.flash('error')[0] || errorText;
|
||||
data.title = '[[pages:login]]';
|
||||
|
||||
if (!data.allowLocalLogin && !data.allowRegistration && data.alternate_logins && data.authentication.length === 1) {
|
||||
if (res.locals.isAPI) {
|
||||
return helpers.redirect(res, {
|
||||
external: nconf.get('relative_path') + data.authentication[0].url,
|
||||
});
|
||||
privileges.global.canGroup('local:login', 'registered-users', function (err, hasLoginPrivilege) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
return res.redirect(nconf.get('relative_path') + data.authentication[0].url);
|
||||
}
|
||||
if (req.loggedIn) {
|
||||
user.getUserFields(req.uid, ['username', 'email'], function (err, user) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
|
||||
data.allowLocalLogin = hasLoginPrivilege || parseInt(req.query.local, 10) === 1;
|
||||
if (!data.allowLocalLogin && !data.allowRegistration && data.alternate_logins && data.authentication.length === 1) {
|
||||
if (res.locals.isAPI) {
|
||||
return helpers.redirect(res, {
|
||||
external: nconf.get('relative_path') + data.authentication[0].url,
|
||||
});
|
||||
}
|
||||
data.username = allowLoginWith === 'email' ? user.email : user.username;
|
||||
data.alternate_logins = false;
|
||||
return res.redirect(nconf.get('relative_path') + data.authentication[0].url);
|
||||
}
|
||||
if (req.loggedIn) {
|
||||
user.getUserFields(req.uid, ['username', 'email'], function (err, user) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
data.username = allowLoginWith === 'email' ? user.email : user.username;
|
||||
data.alternate_logins = false;
|
||||
res.render('login', data);
|
||||
});
|
||||
} else {
|
||||
res.render('login', data);
|
||||
});
|
||||
} else {
|
||||
res.render('login', data);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Controllers.register = function (req, res, next) {
|
||||
|
||||
Reference in New Issue
Block a user