在GRANDstack中设置用户级别的授权

问题描述

我使用仓库graphql-auth-directives的授权,基于GRANDstack创建了一个问答平台(类似于stackoverflow)。这使我们可以在角色级别或作用域级别上检查身份验证,授权。

在此平台上,用户可以回答问题,并且可以将答案另存为草稿。只要未发布答案,用户就应该看到答案,而其他人则不能看到答案。但是其他用户应该会看到所有其他最终答案。

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

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

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

他/她应该看到A1和A2作为答案。但是,如果另一个用户U2当前在草稿中对此问题有一个答案,请说A3。然后他/她应该检索A1,A2和A3。

是否有一些通用的解决方案?如果不是,那么对这种功能进行编程的建议方法是什么?

解决方法

为了解决上述问题,我修改了 graphql-auth-directives 软件包并创建了自己的软件包,请参阅 this demo.。这允许您创建我所称的“条件权限”。为了更好地理解实现,我建议您查看我写的关于它的 here 文章。