Итак, я обнаружил, что у меня есть повторный код для функций промежуточного программного обеспечения Express.
Первая функция:
const isAdmin = async (req, res, next) => {
try {
const requestingUser = await knex('users')
.first('current_role')
.where('id','=',req.user.id)
requestingUser.current_role !== 'admin' ? res.sendStatus(403) : next()
} catch (error) {
res.send({error})
}
}
Вторая функция:
const isAdminOrRecruiter = async (req, res, next) => {
try {
const requestingUser = await knex('users')
.first('current_role')
.where('id','=',req.user.id)
const isNotAllowed = requestingUser.current_role !== 'admin' && requestingUser.current_role !== 'recruiter'
isNotAllowed ? res.sendStatus(403) : next()
} catch (error) {
res.send({error})
}
}
Мой вопроскак я могу сделать одну абстрактную функцию, такую как isAllowed(['admin])
, чтобы только администратор мог пройти, или isAllowed(['admin','recruiter'])
, чтобы она могла разрешить только администраторам и рекрутерам проходить?
Конкретная проблема, с которой я сталкиваюсь, связана с аргументами:уже три из них и не уверены, куда поставить четвертый.