Definindo controle de acesso
Podemos gerenciar quem pode acessar cada campo e diretiva do schema por meio de listas de controle de acesso.
O Gato GraphQL inclui as seguintes regras de controle de acesso:
- Desabilitar o acesso
- Conceder acesso se o usuário estiver conectado ou desconectado
- Conceder acesso se o usuário tiver determinado papel
- Conceder acesso se o usuário tiver determinada capacidade
- Conceder acesso se o visitante vier de um endereço IP autorizado
Sempre que a query solicitada (executada por meio de um endpoint personalizado ou como uma query persistida) contiver um ou mais campos ou diretivas adicionados à lista de controle de acesso, as regras correspondentes são avaliadas. Se alguma regra não for satisfeita, o acesso a esse campo ou diretiva é negado.
A configuração é criada por meio de uma lista de controle de acesso (ACL) e fornecida aos endpoints personalizados e queries persistidas via configuração do schema.
Acessando todas as listas de controle de acesso
Clicando em "Access Control Lists" no menu do plugin, é exibida a lista de todas as listas de controle de acesso criadas:

Criando uma nova lista de controle de acesso
Clique no botão "Add New Access Control List" para abrir o editor do WordPress:

Dê um título à lista de controle de acesso, adicione entradas com operações, campos e diretivas, configure as regras aplicáveis e defina a visibilidade (pública ou privada):

Quando estiver pronta, clique no botão Publicar. A nova lista de controle de acesso ficará então disponível para a configuração do schema.
Entradas de controle de acesso
Cada lista de controle de acesso contém uma ou mais entradas, cada uma com os seguintes elementos:
- As operações às quais conceder ou negar acesso
- Os campos aos quais conceder ou negar acesso
- As diretivas às quais conceder ou negar acesso
- A lista de regras a validar

Selecionando campos de interfaces
Além dos campos de tipos, também é possível selecionar campos de interfaces. Nesse caso, a validação do controle de acesso é realizada em todos os tipos que implementam a interface.

Modo público/privado
Se o módulo "Public/Private Schema" estiver habilitado, quando o acesso a algum campo ou diretiva for negado, há 2 maneiras de a API se comportar:
- 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 o campo ou a diretiva não existe
Se este módulo não estiver habilitado, o comportamento padrão é público.
Modo público/privado granular
Se a opção "Enable granular control?" do módulo "Public/Private Schema" estiver ativada, a entrada possui um elemento adicional:
- Schema Público/Privado: comportamento quando o acesso é negado

Descrevendo a lista de controle de acesso
Use o campo "Resumo", no painel de configurações do documento, para dar uma descrição à lista de controle de acesso.
Veja mais informações no guia Adicionando uma descrição à API.
Usando a lista de controle de acesso
Após criar a ACL, podemos fazer com que o Endpoint Personalizado ou a Query Persistida a utilize editando a Configuração do Schema correspondente, e selecionando a ACL na lista sob o bloco "Access Control Lists".

Se a configuração não for personalizada, as listas de controle de acesso padrão definidas na página de Configurações, na aba "Access Control", serão utilizadas:
