Controle de Acesso
Conceda acesso granular ao schema, com base no fato de o usuário estar autenticado (ou não), ter um determinado papel ou capacidade, e muito mais.
Descrição
Esta extensão nos permite criar Listas de Controle de Acesso, para gerenciar quem pode acessar os diferentes elementos (operações, campos e directives) do schema GraphQL.
Um novo Custom Post Type "Lista de Controle de Acesso" é adicionado ao site. Podemos navegar pelos seus registros na página "Listas de Controle de Acesso" no menu, e clicar em "Adicionar Nova Lista de Controle de Acesso" para adicionar um novo registro no editor.


No editor, indicamos quais regras devem ser satisfeitas para acessar quais elementos do schema, dentre as operações (query ou mutation), campos, campos globais e directives.

Atribuímos a Lista de Controle de Acesso ao endpoint desejado (endpoint privado, endpoint único, endpoints personalizados ou queries persistidas) por meio da Configuração do Schema.

Ao executar uma query GraphQL, se ela contiver algum dos elementos do schema selecionados na Lista de Controle de Acesso, as regras escolhidas são avaliadas.
Se alguma regra não for satisfeita, o acesso a essa operação, campo ou directive é negado, e podemos configurar como a API deve fornecer a resposta:
- Modo público: Fornece uma mensagem de erro ao usuário, indicando por que o acesso foi negado
- Modo privado: A mensagem de erro indica que a operação, o campo ou a directive não existe
Por exemplo, no modo público, podemos obter esta resposta:
{
"errors": [
{
"message": "You must have role 'author' to access field 'title' for type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Enquanto no modo privado podemos obter esta resposta:
{
"errors": [
{
"message": "There is no field 'title' on type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Lista de regras de Controle de Acesso
A extensão fornece as seguintes regras de Controle de Acesso:
- Desabilitar o acesso
- Conceder acesso somente se o usuário estiver autenticado ou não autenticado
- Conceder acesso somente se o usuário tiver um determinado papel
- Conceder acesso somente se o usuário tiver uma determinada capacidade