#amazon-web-services #graphql #authorization #aws-amplify #aws-appsync
Вопрос:
У меня есть 3 модели: Пользователь, Список покупок и Товар. Товар принадлежит списку покупок, а список покупок принадлежит Пользователю. Ниже приведена схема grphql
type User @model{ id: ID! email: String! name: String shoppingLists: [ShoppingList] @connection(keyName: "byUser", fields: ["id"]) } type ShoppingList @model @auth(rules: [{ allow: owner, ownerField: "userId" }]) @key(name: "byUser", fields: ["userId"]){ id: ID! name: String! description: String items: [Item] @connection(keyName: "byShoppingList", fields: ["id"]) userId: ID user: User @connection(fields: ["userId"]) } type Item @model @key(name: "byShoppingList", fields: ["shoppingListId"]){ id: ID! name: String! description: String shoppingListId: ID! shoppingList: ShoppingList @connection(fields: ["shoppingListId"]) }
Как применить правила аутентификации к элементу, чтобы доступ к нему имел только владелец, без сохранения поля Идентификатор пользователя (добавление @auth(rules: [{ allow: owner, ownerField: "userId" }])
к типу элемента) в каждом объекте? Список покупок уже знает, какому пользователю он принадлежит, поэтому я хочу, чтобы элемент получил его из списка покупок.