【问题标题】:Custom user permissions on table in HasuraHasura中表的自定义用户权限
【发布时间】:2020-06-20 19:14:11
【问题描述】:

我正在开发一个需要对特定表具有自定义权限的应用。我有以下数据结构:

Users
  -> id
  -> name

Accounts
  -> id
  -> name

UserAccounts
  -> userId
  -> accountId
  -> permissionLevel

permissionLevel 是一个枚举,可以是:OwnerReadAndWriteReadOnly

我想要的是:
1) 如果您是UserAccountOwner,您可以邀请其他用户。
2)如果你想创建一个新的Account,你将在UserAccounts中获得Owner的权限。
3) 当您不是上述AccountOwner 时,您不能将自己添加到UserAccounts

我遇到的问题是我不确定如何在 Hasura 中解决这个问题。我尝试了以下 Hasura 权限(但我缺少扩展 where 子句的选项(见下文)):

{
    "_or": [
        {
            "_and": [
                {
                    "accountId": {
                        "_is_null": false
                    }
                },
                {
                    "Account": {
                        "UserAccounts": {
                            "_and": [
                                {
                                    "userId": {
                                        "_eq": "X-Hasura-User-Id"
                                    }
                                },
                                {
                                    "permissionLevel": {
                                        "_eq": "Owner"
                                    }
                                }
                            ]
                        }
                    }
                }
            ]
        },
        {
            "_not": {
                "_exists": {
                    "_table": {
                        "name": "Account",
                        "schema": "public"
                    },
                    "_where": {
                        "UserAccounts": {
                            "accountId": {
                                "_eq": "$accountIdFromQuery" // <-- this does not exist AFAIK
                            }
                        }
                    }
                }
            }
        }
    ]
}

所以我不知道该往哪个方向走。也许我只是遗漏了一些东西,也许我需要使用自定义 view 或者我需要尝试自定义 postgresql 函数。非常感谢任何帮助!

【问题讨论】:

    标签: permissions hasura


    【解决方案1】:

    目前,我的解决方案是使用事件触发器(触发 AWS Lambda 函数)以管理员权限写入 UserAccounts 表。 Hasura 有关于如何实现这一点的文档:https://hasura.io/docs/1.0/graphql/manual/event-triggers/serverless.html

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 2021-12-02
      • 1970-01-01
      • 2020-11-07
      • 2020-10-03
      • 1970-01-01
      • 2014-01-10
      • 2015-07-29
      • 1970-01-01
      相关资源
      最近更新 更多