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

Posted

技术标签:

【中文标题】Hasura:允许用户不为自己的帖子投票【英文标题】:Hasura: Allow users to not vote for their own post 【发布时间】:2021-03-22 06:29:39 【问题描述】:

我有三个模型UserPostVote

我尝试创建基于角色的授权,其中作者(创建帖子/博客的用户)无法为自己的帖子/博客投票。为了识别用户,我使用了 Hasura 会话变量 X-Hasura-User-Id。为投票表配置(行插入)权限规则,

错误:


  "errors": [
    
      "extensions": 
        "path": "$.selectionSet.insert_Vote_one.args.object",
        "code": "permission-error"
      ,
      "message": "Check constraint violation. insert check constraint failed"
    
  ]

但是当作者和其他用户尝试对帖子/博客进行投票时,这会违反约束。对于后一种情况,如何使用权限规则解决该问题?

更新

授权设置

我使用我的一个身份验证服务器(express)来创建用户和 access_token,其中包含 user.id 作为 Hasura 会话变量 X-Hasura-User-Id

然后我使用这个 access_token 来维护基于角色的授权:

【问题讨论】:

您的身份验证设置是什么? 我更新了我的问题@AbrahamLabkovsky 【参考方案1】:

您似乎要制定以下规则:X-Hasura-User-Id != Vote.blog.User_id(假设 FK Vote.Blog_id 的 hasura 关系称为 blog)。

您正在做的是确保Vote.User_id != X-Hasura-User-Id。我假设提交投票的用户将始终拥有与自己相同的 id。这将始终导致违反权限约束。

除非我误解了什么......

如果有帮助,请告诉我们。

【讨论】:

谢谢,我以错误的方式应用了规则。

以上是关于Hasura:允许用户不为自己的帖子投票的主要内容,如果未能解决你的问题,请参考以下文章

仅当变量不为空时,如何应用 Hasura `where` 过滤器?

Hasura 上的客户端数据备份

Cordova AppRate 插件尝试为自己投票

在 CouchBase 上获取未经用户投票的帖子的最有效方法是啥?

Heroku + Rails:如何允许我的用户添加他们自己的自定义域

无法弄清楚“一旦10个用户喜欢它就批准帖子”的系统