Laravel lighthouse / graphQL - ограничить список моделей теми, к которым пользователь может получить доступ при вызове во вложенном запросе - PullRequest
0 голосов
/ 27 февраля 2020

В моей системе есть дела, которые принадлежат пользователям. Пользователи являются частью отделов. Настройка заключается в том, что пользователи могут получить доступ ко всем случаям, которые принадлежат пользователям, которые находятся в том же отделе, что и пользователь.

Проблема заключается в том, что: если я пользователь UserX и я являюсь частью DepartmentA, а также есть пользователь Y который является частью того же отдела, а также DepartmentB и третьим UserZ, который является только частью DepartmentB. Подобный запрос позволяет UserX получать доступ к случаям UserZ через UserY:

query {
  me {
    id
    name
    department {
        cases {
            id
            user {
                id
                name
                department {
                    cases {
                        ... ends up listing cases belonging to departments that the user should not have access to
                    }
                }
            }
        }
    }
  }
}

Поэтому мой вопрос заключается в том, как мне контролировать доступ пользователей, чтобы они возвращали только те дела, к которым у них есть доступ, независимо от того, в каком «контекст», в котором запрашиваются дела. Что я хотел бы сделать в RESTful API, так это просто получить список разрешенных идентификаторов, к которым пользователь может получить доступ, и отфильтровать их, но я не уверен, что это правильный путь подойти к решению GraphQL.

Я действительно надеюсь, что мой вопрос имеет смысл, и спасибо за то, что прочитали его.

1 Ответ

0 голосов
/ 28 февраля 2020

К сожалению, это не выполнимо с помощью lighthouse- php - это не совсем вина библиотеки, но вместо этого GraphQL просто недостаточно гибок, чтобы делать то, что вы просите - вам просто нужно использовать REST для управления вашим Поток данных.

...