具有动态角色的基于角色的访问控制

时间:2019-10-03 13:51:51

标签: javascript typescript roles nestjs rbac

我们有一个嵌套应用程序,应实现rbac。我基于防护文档https://docs.nestjs.com/guards添加了一个基本的防护和装饰器。 问题:这仅允许静态角色。

我们的目标:就我们而言,我们有一个Contract实体。仅在合同的承包商(<User>)或承包商的主管(<User>)尝试访问合同时,才应加载该合同。 我不想实现类似if (contract.contractor.id === user.id)之类的东西,因为我们有很多不同的情况,随着时间的推移会变得一团糟。

如下所示:

@Get()
@Roles(ROLES.ADMIN, ROLES.CONTRACTOR, ROLES.SUPERVISOR)
getContractById(...): Contract {
    return this.contractService.findById(...);
}

当然,ROLES.SUPERVISOR只是一个字符串,然后与用户的静态角色匹配。所以这是一个问题:我该如何使用动态角色来实现类似的功能,例如主管角色,该角色仅在某些项目中是动态的。

0 个答案:

没有答案