是否可以在 Loopback 的远程方法中获取当前用户的角色?

Is it possible to get the current User’s roles accessible in a remote method in Loopback?

是否可以在 Loopback 的远程方法中获取当前用户的角色?

我正在尝试允许远程方法 return 基于使用 where 过滤器和当前用户 ID 查找的数据子集,但对于管理员用户,我只想 return全套数据

所以我一直在尝试获取当前用户的角色列表。但我正在努力使 Role.getRoles() return 除了:

[ '$unauthenticated', '$everyone' ]

我已经尝试了来自 loopback.getCurrentContext() 的上下文和传递给 beforeRemote 方法的上下文并且我已经尝试了 ACL.checkAccessForContext().

如有任何帮助,我们将不胜感激。

发生这种情况的原因有很多,其中之一是 Role 模型与您的 User 模型 (see here for brief explanation) 无关。你能检查一下吗?

除此之外,我们可能需要更好的文档来说明第一个参数(上下文)(抱歉 :( )。如果您查看 tests for the role class,您可以了解如何使用它。

var RoleMapping = loopback.RoleMapping;
RoleMapping.attachTo(ds); // `ds` is your data source

// ...

Role.getRoles({principalType: RoleMapping.USER, principalId: user.id}, function(err, roles) {
    console.log(roles);  // everyone, authenticated, etc (hopefully)
});