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:

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:

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

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

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.

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

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

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