我目前正在检查 FaunaDB 创建示例目标跟踪器(待办事项!)应用程序。使用 graphQL,我将架构创建为:
type Goal {
title: String!
completed: Boolean!
owner: User!
}
type User {
name: String!
username: String! @unique
}
input GoalInput {
title: String!
completed: Boolean!
}
我想将 ABAC 权限设置为:
- 登录用户可以查看自己创建的目标。
- 登录的用户只能编辑自己创建的目标。
角色的权限已设置为:
{
resource: Collection("Goal"),
actions: {
read: Query(
Lambda("goalRef", Equals(Select(["data", "owner"], Get(Var("goalRef"))), Identity()))
),
write: Query(
Lambda("goalRef", Equals(Select(["data", "owner"], Get(Var("goalRef"))), Identity()))
)
}
}
虽然这read
部分运作良好,但write
部分,不是那么多。updateGoal
(由 FaunaDB 自动创建的突变)不断抛出权限不足错误。