Применение нескольких политик в парусах на маршруте

Как применить несколько политик в парусах на маршрутах, которые генерируются парусами, например: /users/:id/orders. Я могу применить единую политику, подобную этой, в config/routes.js.

'/users/:id/orders' : {
   policy : 'isAuthenticated'
}

Но как можно применить более одной политики аналогичным образом


person Devendra Verma    schedule 23.09.2016    source источник


Ответы (1)


К сожалению, документация http://sailsjs.org/documentation/concepts/routes/custom-routes#?policy-target-syntax не говорит о цепочке политик в маршрутах.

В качестве альтернативы вы можете защитить действие заполнения в своем пользовательском контроллере следующим образом: изменить config/policies.js

UserController: {
    populate: ['isAuthenticated', 'isAllowed']
}

http://sailsjs.org/documentation/reference/blueprint-api/populate-where

Если вы просто хотите применить политику только к ассоциации заказов, вы можете получить параметр ассоциации (/:model/:id/:association) из объекта req внутри политики и обработать свой случай:

module.exports = function(req, res, next) {
  if (req.param('association') == 'orders') {
      // do your magic
  } else {
     return next();
  }
};
person Upvote    schedule 23.09.2016