Crear una API
Crear una APIDefiniendo el control de acceso

Definiendo el control de acceso

Podemos gestionar quién puede acceder a cada campo y directiva en el esquema mediante listas de control de acceso.

Gato GraphQL viene con las siguientes reglas de control de acceso:

  • Deshabilitar el acceso
  • Conceder acceso si el usuario está autenticado o no
  • Conceder acceso si el usuario tiene cierto rol
  • Conceder acceso si el usuario tiene cierta capacidad
  • Conceder acceso si el visitante viene de una dirección IP permitida

Siempre que la consulta solicitada (ya sea ejecutada mediante un endpoint personalizado o como una consulta persistida) contenga uno o más de los campos o directivas añadidos a la lista de control de acceso, se evaluarán las reglas correspondientes. Si alguna regla no se cumple, se deniega el acceso a ese campo o directiva.

La configuración se crea mediante una lista de control de acceso (ACL), y se entrega a los endpoints personalizados y consultas persistidas a través de la configuración del esquema.

Accediendo a todas las listas de control de acceso

Al hacer clic en "Access Control Lists" en el menú del plugin, se muestra la lista de todas las listas de control de acceso creadas:

Listas de control de acceso en el admin
Listas de control de acceso en el admin

Creando una nueva lista de control de acceso

Haz clic en el botón "Add New Access Control List" para abrir el editor de WordPress:

Creando una lista de control de acceso

Asigna un título a la lista de control de acceso, añade entradas con operaciones, campos y directivas, configura qué reglas se les aplican, y define su visibilidad (pública o privada):

Creando una lista de control de acceso

Cuando esté lista, haz clic en el botón Publicar. A continuación, la nueva lista de control de acceso queda disponible para la configuración del esquema.

Entradas de control de acceso

Cada lista de control de acceso contiene una o varias entradas, cada una de ellas con los siguientes elementos:

  • Las operaciones a las que conceder o denegar acceso
  • Los campos a los que conceder o denegar acceso
  • Las directivas a las que conceder o denegar acceso
  • La lista de reglas a validar

Entrada de control de acceso

Seleccionando campos desde interfaces

Además de campos desde tipos, también podemos seleccionar campos desde interfaces. En este caso, la validación de control de acceso se realiza en todos los tipos que implementan la interfaz.

Seleccionando un campo desde una interfaz
Seleccionando un campo desde una interfaz

Modo público/privado

Si el módulo "Public/Private Schema" está habilitado, cuando se deniega el acceso a algún campo o directiva, hay 2 formas en que la API puede comportarse:

  • Modo público: proporciona un mensaje de error al usuario, indicando por qué se deniega el acceso
  • Modo privado: el mensaje de error indica que el campo o directiva no existe

Si este módulo no está habilitado, el comportamiento por defecto es público.

Modo público/privado granular

Si la opción "Enable granular control?" del módulo "Public/Private Schema" está activada, la entrada tiene un elemento adicional:

  • Esquema Público/Privado: comportamiento cuando se deniega el acceso
Modo de esquema Público/Privado individual
Modo de esquema Público/Privado individual

Describiendo la lista de control de acceso

Usa el campo "Extracto", del panel de ajustes del documento, para dar una descripción a la lista de control de acceso.

Encuentra más información en la guía Añadiendo una descripción a la API.

Usando la lista de control de acceso

Tras crear la ACL, podemos hacer que el Endpoint Personalizado o la Consulta Persistida la usen editando la correspondiente Configuración del Esquema, y seleccionando la ACL de la lista bajo el bloque "Access Control Lists".

Seleccionando una lista de control de acceso en la Configuración del Esquema
Seleccionando una lista de control de acceso en la Configuración del Esquema

Si no se personaliza la configuración, se usarán las listas de control de acceso por defecto definidas en la página de Ajustes, en la pestaña "Access Control":

Seleccionando las listas de control de acceso por defecto en la página de Ajustes