我正在尝试为Hasura设置一个“行选择”权限。我有一个(简化为简洁)数据模型,如下所示
用户
id: UserID应用程序
id: AppIDApp权限
user_id: User ID
app_id: App ID
permissions: [ ENUM: Admin, View, Owner ]馈送
app_id: AppID
feed_data: Some Feed Data现在,我希望查询通过身份验证的用户的所有Feed。查询的形式可以是
query MyQuery {
feed(limit: 10) {
app_id
feed_data
}
}app_id的应用程序,通过身份验证的用户对其具有视图权限query MyQuery {
feed(limit: 10, where: {app_id: {_in: [1, 2]}}) {
app_id
feed_data
}
}由于feed表中没有直接包含user_id信息,所以不能对feed表直接使用X-Hasura-User-Id属性。我还尝试对_exists表使用app_permission关系,但无法在app_id子句中添加app_id筛选器。
{
"_exists": {
"_where": {
"user_id": {
"_eq": "X-Hasura-User-Id"
}
},
"_table": {
"schema": "public",
"name": "app_permission"
}
}
}我不太清楚如何与Hasura进行这样的数据建模。任何帮助都是非常感谢的。谢谢。
发布于 2021-07-02 12:22:15
由于您没有直接的关系,我认为您可以通过appPermissions表进行查询,而不是直接查询提要表。
当您使用feeds作为外键关系创建appId表时,Hasura允许您跟踪这种关系,如下所示

通过这种方式,可以对graphQL表进行嵌套的appPerms查询,如下所示
query GetUserFeeds {
test_appPerms {
id
userId
feeds(limit: 10) {
app_id
id
feed_data
}
}
}

发布于 2021-07-02 14:25:23
我想建议的另一件事是,您可以尝试使用一个类似于x-hasura-app-id的会话变量,在x-hasura-role旁边构建您的权限。
https://hasura.io/docs/latest/graphql/core/auth/authorization/roles-variables.html
https://stackoverflow.com/questions/68223963
复制相似问题