直接模型的所有权

时间:2016-11-15 10:03:55

标签: loopbackjs strongloop

我有一个拥有房子的用户(几个用户可以拥有房子),房子可以有几个家具。

CustomUser.json关系:

"houses": {
   "type": "hasAndBelongsToMany",
   "model": "House",
   "foreignKey": "houseId"
}

House.json关系:

"furnitures": {
   "type": "hasAndBelongsToMany",
   "model": "Furniture",
   "foreignKey": ""
},
"customUsers": {
   "type": "hasAndBelongsToMany",
   "model": "CustomUser",
   "foreignKey": ""
}

我的ACL很简单,对于House和Furniture来说都是这样的:

"acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "admin",
      "permission": "ALLOW"
    },
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW"
    }
]

现在,为用户访问房屋工作正常,但用户因为属于房屋(房屋是房主)而未能列出他们的家具。我如何以最简单的方式解决这个问题?最好是以某种方式定义用户通过房子拥有家具?家具必须属于房子(因为多个用户可以有房子)。

2 个答案:

答案 0 :(得分:1)

所以我通过另一个名为" loopback-component-access-groups"它允许您定义组。在这个特殊情况下,我将House模型设为用户和家具可以访问的组。用户可以拥有不同的角色,因此我只设置用户(具有角色"成员")可以访问同一组(房屋)中的家具。这个解决方案对我有用,但我不完全确定如果它们与家具相关,是否还有其他对象继承它们属于房屋。

答案 1 :(得分:0)

编写我自己的角色解析器使得它非常灵活,在角色解析器中我必须制作逻辑以找到原始父级并确保没有死关系(因为LB还没有支持级联)。

我建议从此开始:

https://loopback.io/doc/en/lb3/Defining-and-using-roles.html