有没有办法区分查询和数据条件

Is there a way to differentiate between query and data conditions

我有一个名为 documentations 的 feathersjs 服务。修补 documentation 时,用户只能将 editing 字段设置为他自己的 user._idnull。另外用户只能给自己公司的补丁documenations

我已将我的权限存储在 MongoDB 数据库中:

...
{
  "action": "patch",
  "subject": "documentation",
  "fields": ["editing", "sections", "title", "published"],
  "conditions": {
    "company": "${user.belongsTo}"
  }
}
...

有没有办法用 CASL 实现 editing 字段逻辑?

有什么方法可以区分查询条件和数据条件吗?

坦率地说,这种逻辑在我看来是BL问题而不是权限问题。但是你也可以用 CASL 做类似的事情,为 editing 字段创建一个单独的规则:

can(“update”, “documentation”, { company: ..., editing: { $in: [null, user.id] } }, [“editing”])

因此,每次更新 editing 只需检查权限