Permissions Hasura中表的自定义用户权限

Permissions Hasura中表的自定义用户权限,permissions,hasura,Permissions,Hasura,我正在开发一个应用程序,它需要对特定表的自定义权限。我有以下数据结构: Users -> id -> name Accounts -> id -> name UserAccounts -> userId -> accountId -> permissionLevel permissionLevel是一个枚举,可以是:Owner、ReadAndWrite或ReadOnly 我想要的是以下内容: 1) 如果您是用户帐户的所有

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

Users
  -> id
  -> name

Accounts
  -> id
  -> name

UserAccounts
  -> userId
  -> accountId
  -> permissionLevel
permissionLevel
是一个枚举,可以是:
Owner
ReadAndWrite
ReadOnly

我想要的是以下内容:
1) 如果您是
用户帐户的
所有者
,您可以邀请其他用户。
2) 如果要创建新的
帐户
,您将在
用户帐户
中获得
所有者
权限
3) 如果您不是所述
帐户的
所有者
,则无法将自己添加到
用户帐户

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

{
“_或”:[
{
“_和”:[
{
“帐户ID”:{
“\u为\u空”:false
}
},
{
“账户”:{
“用户帐户”:{
“_和”:[
{
“用户ID”:{
_eq:“X-Hasura-User-Id”
}
},
{
“许可级别”:{
_eq:“所有者”
}
}
]
}
}
}
]
},
{
“_not”:{
“_存在”:{
“_表”:{
“名称”:“账户”,
“架构”:“公共”
},
“_where”:{
“用户帐户”:{
“帐户ID”:{

“_eq”:“$accountIdFromQuery”//目前,我的解决方案是使用事件触发器(触发AWS Lambda函数)以管理员权限写入
UserAccounts
表。Hasura提供了有关如何实现这一点的文档:

目前,我的解决方案是使用事件触发器(触发AWS Lambda函数)以管理员权限写入
UserAccounts
表。Hasura提供了有关如何实现此目的的文档:

{
    "_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
                            }
                        }
                    }
                }
            }
        }
    ]
}