graphql - Hasura:允许用户不为自己的帖子投票

标签 graphql hasura

我有三个型号用户 , 发帖 , 投票

schema


我尝试创建一个基于角色的授权,作者(创建帖子/博客的用户)不能为他们自己的帖子/博客投票。为了识别用户,我使用了 Hasura session 变量 X-Hasura-User-Id .为投票表配置(行插入)权限规则,

picture


错误:
{
  "errors": [
    {
      "extensions": {
        "path": "$.selectionSet.insert_Vote_one.args.object",
        "code": "permission-error"
      },
      "message": "Check constraint violation. insert check constraint failed"
    }
  ]
}
但是,当作者和其他用户尝试对帖子/博客进行投票时,这会违反约束。如何使用权限规则解决后一种情况的问题?
更新
身份验证设置
我使用我的身份验证服务器(express)之一创建包含 user.id 的用户和 access_token作为 Hasura session 变量 X-Hasura-User-Id .
然后我使用这个 access_token 来维护基于角色的授权:
access_token

最佳答案

看来你要制定以下规则:X-Hasura-User-Id != Vote.blog.User_id (假设 FK blog 的 hasura 关系称为 Vote.Blog_id )。
你正在做的是确保 Vote.User_id != X-Hasura-User-Id .我假设提交投票的用户将始终拥有与他们相同的 ID。这将始终导致违反权限约束。
除非我误解了什么......
如果这有帮助,请告诉我们。

关于graphql - Hasura:允许用户不为自己的帖子投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65241210/

相关文章:

graphql - 如何在 Hasura + Postgres 中创建 `json` 列和 `int` (id) 列之间的关系?

graphql - useQuery 错误对象为 graphQLErrors 属性返回空数组

javascript - 棱镜2 : how to fetch nested fields?

reactjs - 如何在 apollo 客户端中将 Mutations 链接在一起

docker - 在没有 Docker 的情况下运行 Hasura

authentication - 如何正确获取由前端设置的 kubernetes 集群中的服务发出的 cookie?

graphql - 如何使用 sequelize-typescript 通过自定义 Apollo GraphQL 解析器查询相关对象?

java - 如何在 graphql-java-tools Resolver 中 @Autowire JPA 存储库

google-kubernetes-engine - GCP CloudSQL、IAM 和 Hasura

next.js - 使用 Apollo SubscriptionClient 的动态 Hasura X-Hasura-Role