Я не понимаю, зачем мне (req, res, next)
после passport.authenticate
функции
Используя это с экспрессом, я следовал учебному пособию, не очень хорошо объяснил этот отрывок
PS: все работает нормально, я просто не понимаю, зачем это нужно
const passport = require('passport')
module.exports = (req, res, next) => {
passport.authenticate('jwt', (err, user) => {
if (err || !user || user.isAdmin !== true) {
res.status(403).send({
message: 'Request blocked, only administrators'
})
} else {
req.user = user
next()
}
})(req, res, next)
}
Вызов функции в качестве промежуточного программного обеспечения
app.get('/admin', isAdmin, (req, res) => {
res.send({
message: 'You are an admin'
})
})
Конфигурация паспортного уровня
passport.use(
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: config.jwtSecret
}, async (jwtPayload, done) => {
try {
const user = await User.findOne({
where: {
id: jwtPayload.id
}
})
if (!user) {
return done(new Error(), false)
}
return done(null, user)
} catch (err) {
return done(new Error(), false)
}
})
)
PSS: мне нужно было создать еще один файл с именем isUser.js для аутентификации пользователей. Как это сделать, если я хочу поместить их обоих в один файл и требовать их, как
const Auth = require('./Auth')
Auth.isUser
Auth.isAdmin
Я пытался, но яне могу понять, как это сделать с помощью функции такого типа: (