Я использовал функцию мягкого удаления в mongodB, чтобы отключить пользователя и не удалять его навсегда. Теперь только включенные пользователи могут войти на сайт, а отключенные пользователи не могут войти на сайт.
// Soft delete feature
exports.getDisabledUsers = function(req,res, next) {
User.find({active: false}, function(err, users) {
if (err) {
res.send(err);
}
res.json(users);
});
}
// Log In
exports.login = function (req, res, next) {
var userInfo = setUserInfo(req.user);
res.status(200).json({
token: 'JWT ' + generateToken(userInfo),
user: userInfo
});
};
// Passport.js
var localLogin = new LocalStrategy(localOptions, function (email, password, done) {
User.findOne({
email: email
}, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
error: 'Login failed. Please try again.'
});
}
user.comparePassword(password, function (err, isMatch) {
if (err) {
return done(err);
}
if (!isMatch) {
return done(null, false, {
error: 'Login failed. Please try again.'
});
}
return done(null, user);
});
});
});
Пользователи с ограниченными возможностями не должны иметь возможности войти в систему. Прямо сейчас они могут войти в систему.





Вход на основе ролей может создать некоторую сложность, но этого можно достичь, просто добавив еще одну коллекцию с именем disabledUsers.
когда администратор отключает любого пользователя, функция щелчка делает две вещи одновременно 1) добавить письмо в коллекцию disabledUser 2) удалить пользователя из коллекции пользователей
Затем в вашей функции входа просто проверьте этот способ
disabledUser.findOne({email :email },
function (err ,user){
if (err) return done(err)
else{
if (!user){
user.findOne({email : email }
write your login stuff here the wau you r doing
}
else{return alert('user is disabled')}
}
})
Вы не проверили статус пользователя, активен он или нет. Это можно сделать, добавив условие в код или изменив запрос mongo и добавив еще одно условие в findOne.
//КОД
если(!пользователь.актив) {
//ВОЗВРАТ ПОЛЬЗОВАТЕЛЯ НЕ АКТИВЕН
}
// МОНГО ЗАПРОС
Пользователь.findOne({ электронная почта: электронная почта, активно: правда }, функция (ошибка, пользователь) { //ВАШ КОД }
При отключении пользователя вы можете переместить эти данные в другую коллекцию, таким образом, ваш отключенный пользователь не сможет войти в вашу систему.
exports.disableUser = function (req, res, next) {
User.findByIdAndUpdate({_id:req.params._id}, {active: false}, function (err, users) {
if (err) {
res.send(err);
}
User.findByIdAndRemove(
{_id:req.params._id},
function(err, doc) {
if (doc) {
DisableUser.insertMany(doc, function(err, doc){
// your response
});
} else {
// your response
}
)
});
}