Вы можете поместить guard.check
промежуточное ПО в другое промежуточное ПО, и вы можете установить необходимые разрешения для req
объекта, а затем получить его в промежуточном ПО обработчика ошибок.
const customGuard = (permissions) => { // middleware factory
return (req, res, next) => { // return a middleware function
req.requiredPermissions = permissions; // store `permissions` in `req.requiredPermissions`
guard.check(permissions)(req, res, next); // check your permissions with express-jwt-permissions's guard
}
}
Использование, замените
app.post("/", guard.check(permissions.$("admin"))
...
на
app.post("/", customGuard(permissions.$("admin"))
...
Затем в промежуточном программном обеспечении ошибки
app.use(function (err, req, res, next) {
console.log("Required permissions: ", req.requiredPermissions); // here
if (err.code === "invalid_token") {
return res.status(401).send("...")
}
if (err.code === "credentials_required") {
return res.status(401).send("...")
}
//...
})