【问题标题】:handle different roles in hasura在哈苏拉处理不同的角色
【发布时间】:2021-07-08 07:20:44
【问题描述】:

好的,所以我的表格是这样的:

user {
  id
  username
}

job {
  id
  title
  posted_by
  applications
}

application {
  id
  applicant_id
  details
  status
}

地点:

  • 每个用户都可以发布工作
  • 用户只能编辑自己发布的职位 (posted_by)
  • 用户可以申请他未发布的任何工作
  • 用户可以删除自己的应用程序
  • 职位发布者可以接受(更改状态)申请到他自己发布的职位

这意味着用户应该根据应用程序具有不同的角色。如果他发布了职位,那么他就是“职位发布者”,如果他发布了申请,那么他就是“应聘者”。

我认为如果我在应用程序表上定义这些角色,他将被动态分配,基于他试图更新的应用程序,但它不起作用。阅读 Hasura 文档,我发现它基于登录时生成的 JWT 令牌中定义的X-Hasura-Role,但用户可以有两个角色。

我还尝试为角色用户定义两行,每行将定义他可以更新的内容,但这也不起作用。

我已经阅读了https://hasura.io/docs/latest/graphql/core/auth/authorization/index.html 没有任何答案。我会继续阅读https://hasura.io/docs/latest/graphql/core/auth/authentication/jwt.html

感谢阅读, 查姆

【问题讨论】:

标签: graphql roles hasura


【解决方案1】:

找到了解决办法。它与X-Hasura-Role 有关。发出请求时,我们需要告诉服务器我们希望应用此操作的角色。如果角色不在我们的 JWT 声明 x-hasura-allowed-roles 中,则操作将默认为 x-hasura-default-role

所以我要做的是(apollo-client):

useMutation(MUTATION, {
  context: {
    headers: {
      'x-hasura-role': 'poster'
    }
  }
}

我希望这对某人有所帮助。很想听听另一种解决方案

【讨论】:

    猜你喜欢
    • 2017-07-16
    • 2015-05-20
    • 1970-01-01
    • 2020-09-09
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多