Я очень плохо знаком с программированием и пишу персональный проект с использованием node.js, express, mongoDB и mongoose.Я написал большую часть этого сам, однако я нанял кого-то, чтобы помочь мне с более продвинутыми частями.Я потерял с ним связь и вернулся под капот, чтобы создать панель администратора, которую я мог бы использовать для написания постов в блоге и других вещей.Я пытаюсь написать промежуточное программное обеспечение, которое только позволяет мне получить доступ к маршруту.Однако это не работает.
function adminAuth(req, res, next){
if(req.user.isAdmin){
return next();
} else {
res.redirect("/");
}
}
Я немного озадачен синтаксисом, который он использовал для создания пользовательской схемы, и я не уверен, как добавить эту пару значений ключей isAdmin.Любая помощь в обновлении моих пользователей с помощью значения ключа isAdmin будет чрезвычайно полезна, а также поможет мне завершить промежуточное ПО, так как (req.user.isAdmin) не работает!(Если я не предоставлю необходимый код, извините за неопытность и скажите, что вы хотели бы увидеть).
Вот маршрут Auth, который нанял кодер, которого я написал, что у меня проблемы с расшифровкой, как пройтив новых данных для модели пользователя.
const isAdmin = false;
const passwordHash = await bcrypt.hash(req.body.password, saltRounds);
const db = client.db(dbName);
const col = db.collection('users');
const user = {
email, firstName, lastName, password: passwordHash, isAdmin,
};
локальная стратегия
module.exports = function localStrategy() {
passport.use(new Strategy(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
}, (req, email, password, done) => {
const url = process.env.MONGOLAB_URI;
const dbName = 'giftgrab';
(async function addUser() {
let client;
try {
client = await MongoClient.connect(url);
const db = client.db(dbName);
const col = db.collection('users');
const user = await col.findOne({ email });
debug('Found user by email');
debug(user);
if (!user) {
req.flash('error', 'The username or password is wrong');
done(null, false);
} else {
const match = await bcrypt.compare(password, user.password);
if (match) {
done(null, user);
} else {
req.flash('error', 'The username or password is wrong');
// we pass null because it did not error, just failed
done(null, false);
}
}
} catch (e) {
debug(e.stack);
}
client.close();
}());
}