Criando uma API
Criando uma APIDefinindo controle de acesso

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:

Listas de controle de acesso no painel administrativo
Listas de controle de acesso no painel administrativo

Criando uma nova lista de controle de acesso

Clique no botão "Add New Access Control List" para abrir o editor do WordPress:

Criando uma lista de controle de acesso

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):

Criando uma lista de controle de acesso

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

Entrada de controle de acesso

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.

Selecionando um campo de uma interface
Selecionando um campo de uma 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
Modo de schema Público/Privado individual
Modo de schema Público/Privado individual

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".

Selecionando uma lista de controle de acesso na Configuração do Schema
Selecionando uma lista de controle de acesso na Configuração do Schema

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:

Selecionando as listas de controle de acesso padrão na página de Configurações