Я пытаюсь реализовать авторизацию для graphql-php
в моем проекте. Идея состоит в том, чтобы иметь массив доступа пользователя, где я мог бы установить доступ для каждой группы пользователей к конкретным запросам и мутациям и реализовать метод check-access в контроллере graphql до выполнения запроса.
Одним из способов было бы проанализировать запрос самостоятельно, но мне было интересно, знает ли кто-нибудь, как получить доступ к полному пути к запросу, как я видел, это показано в https://webonyx.github.io/graphql-php/error-handling/
<?php
[
'message' => 'My reported error',
'category' => 'businessLogic',
'locations' => [
['line' => 10, 'column' => 2]
],
'path' => [
'path',
'to',
'fieldWithException'
]
];
Путь можно получить в резольверах через ResolveInfo
объект, который получает каждая функция распознавателя. Документы не показывают это, но четвертый аргумент для каждого распознавателя ResolveInfo
(из источника webonyx $resolveFn($source, $args, $context, $info)
). Просто получите это:
function ($root, $args, $context, $info) {
$path = $resolveInfo->path;
// your decisioning
}
И вы принимаете решение на основе этого.
Других решений пока нет …