在 GRANDstack 中设置用户级别授权

Setting up user level authorization in GRANDstack

我创建了一个基于 GRANDstack 的问答平台(类似于 Whosebug),使用授权使用 repo graphql-auth-directives。这允许我们检查角色级别或范围级别的身​​份验证、授权。

在这个平台上,用户可以回答问题,并且可以将答案保存为草稿。只要答案没有发布,用户自己就应该看到它,而不是其他人。然而,其他用户应该会看到所有其他最终确定的答案。

如何创建这种类型的用户级别授权?结果应该提供以下内容:

假设一个 ID 为 someid 的问题 Q。目前已经确定了答案 A1 和 A2。如果某个随机用户 U1 执行查询:

query: {
  Question(id:someid){
    answers {
      Answer{  
        id,
        text,
        is_draft
      }
    }
  }
}

he/she 应该看到 A1 和 A2 作为答案。但是,如果另一个用户 U2 目前在草稿中有这个问题的答案,比如 A3。然后 he/she 应该检索 A1、A2 和 A3。

是否有一些通用的解决方案可用?如果不是,建议使用什么方法来编写此功能?

为了解决上述问题,我调整了 graphql-auth-directives 包并创建了我自己的包,请参阅我写的关于它的 here. This allows you to create such 'conditional permissions' as I have called them. To get a better understanding of the implementation I'd suggest you to look at the Medium 文章。