Как мне получить разрешение на основе ролей для работы из этого состояния? - PullRequest
0 голосов
/ 28 февраля 2019

Я добавил авторизацию на основе ролей в мои маршруты, и независимо от того, какого пользователя я пытаюсь использовать для отправки запроса через почтальона, я получаю «запрещенную» ошибку, которая есть в моем коде.Роли объявлены на пользователя.Роль по умолчанию для пользователя - «пользователь», а у меня есть другой пользователь с ролью «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
...