我遇到了保护嵌套关系的问题。我有三种模式:
Addresses
Users
到Contacts
User
User
User
User
可以获取Address
信息:
/users/{user_id}/address
。
User
也可以到达Contacts
:
/users/{user_id}/contacts
。
但 User
也可以到达Contacts
Addresses
:
/users/{user_id}/contacts?filter={"include":"addresses"}
我想将Addresses
关系限制为 $ owner 。
临时解决方案:
现在我手动检查所有者是否是访问该关系的人:
Address.observe('access', function restrict(ctx, next) {
if(_.isObject(ctx.query.where) && ctx.query.where.user_id && ctx.query.where.user_id.inq){
var id = app.models.user.getCurrentUserId();
if(validate(ctx.query.where.user_id.inq[0] === id, 'Unauthorization Access', "UNAUTHORIZATION_ACCESS", 403, next)){return;}
}
next();
});