仅当从服务器完成呼叫或用户为管理员时,才允许使用方法

时间:2018-11-30 22:34:34

标签: javascript feathersjs

我正在使用feathersjs,需要保护服务的补丁方法。我正在使用feathers-hooks-common作为挂钩。仅当调用是从服务器进行或由管理员完成时,才需要允许使用patch方法。

const {disallow, isNot, iff, isProvider} = require('feathers-hooks-common'); 
const isAdmin = context => { return context.params.user.isAdmin;}
module.exports = {
    patch: [
        iff(isProvider('external') && isNot(isAdmin), disallow()), 
        iff(isNot(isProvider('server')), disallow())
    ],
}

第二条规则iff(isNot(isProvider('server')), disallow())可以正常工作,但是我无法获得允许服务器调用的第一条规则。

1 个答案:

答案 0 :(得分:1)

钩子不能与条件条件结合使用,但是由于您已经在使用iff,因此可以将其设为嵌套语句:

const {disallow, isNot, iff, isProvider} = require('feathers-hooks-common'); 
const isAdmin = context => { return context.params.user.isAdmin;}
module.exports = {
    patch: [
        iff(isProvider('external'),
          iff(isNot(isAdmin), disallow())
        )
    ],
}