Я добавил авторизацию на основе ролей в мои маршруты, и независимо от того, какого пользователя я пытаюсь использовать для отправки запроса через почтальона, я получаю «запрещенную» ошибку, которая есть в моем коде.Роли объявлены на пользователя.Роль по умолчанию для пользователя - «пользователь», а у меня есть другой пользователь с ролью «admin».
Мои маршруты
var express = require('express');
var router = express.Router();
const AuthenticationController = require('./controllers/AuthenticationController')
const AuthenticationControllerPolicy = require('./policies/AuthenticationControllerPolicy')
const ProjectController = require('./controllers/ProjectController')
const UserController = require('./controllers/UserController')
const Role = require('./_helpers/role');
const permit = require("./middleware/permission");
router.post('/register',
AuthenticationControllerPolicy.register,
AuthenticationController.register)
router.post('/login',
AuthenticationController.login)
router.get('/projects',
ProjectController.getProjects)
router.post('/projects/create', permit('Admin'),
ProjectController.createProject)
router.get('/users',
UserController.getUsers)
router.get('/users/:user_id', permit('Users'),
UserController.getUser)
module.exports = router;
Мои права доступа .js
function permit(...allowed) {
const isAllowed = role => allowed.indexOf(role) > -1;
// return a middleware
return (req, res, next) => {
if (req.user && isAllowed(req.user.role))
next(); // role is allowed, so continue on the next middleware
else {
res.status(403).json({message: "Forbidden"}); // user is forbidden
}
}
}
module.exports = permit