Итак, у меня есть эта функция в Koa, которая в основном проверяет, может ли пользователь получить доступ к определенному маршруту.
exports.requireRole = async role =>
async (ctx, next) => {
const { user } = ctx.state.user;
try {
const foundUser = await User.findById(user.id);
// If the user couldn't be found, return an error
if (!foundUser) {
ctx.status = 404;
ctx.body = { errors: [{ error: ERRORS.USER_NOT_FOUND }] };
} else {
// Otherwise, continue checking role
if (getRole(user.role) >= getRole(role)) {
await next();
}
ctx.status = 403;
ctx.body = { errors: [{ error: ERRORS.NO_PERMISSION }] };
}
} catch (err) {
ctx.throw(500, err);
}
};
И я хочу использовать его в качестве промежуточного программного обеспечения:
router.delete('/:id', combine([jwtAuth, requireRole(ROLES.ADMIN)]), deleteUser);
Но тогда я получаю сообщение об ошибке:
промежуточное ПО должно быть функцией, а не объектом
Это происходит только тогда, когда я пытаюсь передать в него аргумент.
Что я здесь не так делаю?