Извините за неопределенный заголовок.Однако мне трудно описать это.
Я использую aws-appsync
с aws cognito
для аутентификации.
Я следовал документам по усилению по поводу аннотации @auth
для обработки разрешений на мутации и запросы.
Вот пример моей схемы.Пользователь может создать запись и поделиться ею с другими.Однако они должны только читать запись и не должны иметь прав для ее редактирования.
Запись также имеет несколько заметок.(И еще несколько полей)
type Entry @model @versioned @auth (rules: [
{ allow: owner },
{ allow: owner, ownerField: "shared", queries: [get, list], mutations: []}
]) @searchable {
id: ID!
date: AWSDate
updated_at: AWSDateTime
text: String
notes: [Note] @connection(name: "EntryNotes")
shared: [String]!
}
А вот примечание
type Note @model @versioned @auth (rules: [{ allow: owner }]) {
id: ID!
text: String
track: Track!
diary: DiaryEntry @connection(name: "EntryNotes")
}
Пока все работает отлично.Но проблема в соединении Note
.Потому что, если вы создадите заметку, вы создадите ее следующим образом:
mutation makeNote {
createNote (input: {
text: "Hello there!"
noteEntryId: "444c80ee-6fd9-4267-b371-c2ed4a3ccda4"
}) {
id
text
}
}
Проблема в том, что вы можете создавать заметки для записей, к которым у вас нет доступа.Если вы каким-то образом узнаете, какой у них идентификатор.
Можно ли проверить, есть ли у вас права доступа к записи, до создания заметки?