mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 03:26:04 +01:00
closes #1971
This commit is contained in:
@@ -73,6 +73,22 @@ define('forum/admin/users', function() {
|
|||||||
unselectAll();
|
unselectAll();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.reset-lockout').on('click', function() {
|
||||||
|
var uids = getSelectedUids();
|
||||||
|
if (!uids.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
socket.emit('admin.user.resetLockouts', uids, function(err) {
|
||||||
|
if (err) {
|
||||||
|
return app.alertError(err.message);
|
||||||
|
}
|
||||||
|
app.alertSuccess('Lockout(s) reset!');
|
||||||
|
});
|
||||||
|
|
||||||
|
unselectAll();
|
||||||
|
});
|
||||||
|
|
||||||
$('.admin-user').on('click', function() {
|
$('.admin-user').on('click', function() {
|
||||||
var uids = getSelectedUids();
|
var uids = getSelectedUids();
|
||||||
if (!uids.length) {
|
if (!uids.length) {
|
||||||
|
|||||||
@@ -88,6 +88,14 @@ User.banUser = function(uid, callback) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
User.resetLockouts = function(socket, uids, callback) {
|
||||||
|
if (!Array.isArray(uids)) {
|
||||||
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
|
}
|
||||||
|
|
||||||
|
async.each(uids, user.auth.resetLockout, callback);
|
||||||
|
};
|
||||||
|
|
||||||
User.deleteUsers = function(socket, uids, callback) {
|
User.deleteUsers = function(socket, uids, callback) {
|
||||||
if(!Array.isArray(uids)) {
|
if(!Array.isArray(uids)) {
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var db = require('../database'),
|
var async = require('async'),
|
||||||
|
db = require('../database'),
|
||||||
meta = require('../meta');
|
meta = require('../meta');
|
||||||
|
|
||||||
module.exports = function(User) {
|
module.exports = function(User) {
|
||||||
@@ -42,4 +43,11 @@ module.exports = function(User) {
|
|||||||
User.auth.clearLoginAttempts = function(uid) {
|
User.auth.clearLoginAttempts = function(uid) {
|
||||||
db.delete('loginAttempts:' + uid);
|
db.delete('loginAttempts:' + uid);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
User.auth.resetLockout = function(uid, callback) {
|
||||||
|
async.parallel([
|
||||||
|
async.apply(db.delete, 'loginAttemps:' + uid),
|
||||||
|
async.apply(db.delete, 'lockout:' + uid)
|
||||||
|
], callback);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
@@ -88,10 +88,8 @@ var async = require('async'),
|
|||||||
|
|
||||||
db.deleteObjectField('reset:uid', code);
|
db.deleteObjectField('reset:uid', code);
|
||||||
db.deleteObjectField('reset:expiry', code);
|
db.deleteObjectField('reset:expiry', code);
|
||||||
db.delete('lockout:' + uid);
|
|
||||||
user.auth.clearLoginAttempts(uid);
|
|
||||||
|
|
||||||
callback();
|
user.auth.resetLockout(uid, callback);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user