Controllo degli accessi
Controllo degli accessiControllo degli Accessi

Controllo degli Accessi

Included in the “Power Extensions” bundle

Concedi un accesso granulare allo schema, in base al fatto che l'utente sia connesso (o meno), abbia un determinato ruolo o capacità, e altro ancora.

Descrizione

Questa estensione ci permette di creare delle Liste di Controllo degli Accessi, per gestire chi può accedere ai diversi elementi (operazioni, campi e direttive) dello schema GraphQL.

Un nuovo Custom Post Type "Lista di Controllo degli Accessi" viene aggiunto al sito. Possiamo sfogliare le sue voci nella pagina "Liste di Controllo degli Accessi" nel menu, e cliccare su "Aggiungi Nuova Lista di Controllo degli Accessi" per aggiungere una nuova voce nell'editor.

Liste di Controllo degli Accessi
Liste di Controllo degli Accessi
Editor della Lista di Controllo degli Accessi
Editor della Lista di Controllo degli Accessi

Nell'editor, indichiamo quali regole devono essere soddisfatte per accedere a quali elementi dello schema, tra le operazioni (query o mutation), i campi, i campi globali e le direttive.

Creazione di una Lista di Controllo degli Accessi

Assegniamo la Lista di Controllo degli Accessi all'endpoint desiderato (endpoint privato, endpoint singolo, endpoint personalizzati o persisted queries) tramite la Configurazione dello Schema.

Selezione di una Lista di Controllo degli Accessi nella Configurazione dello Schema
Selezione di una Lista di Controllo degli Accessi nella Configurazione dello Schema

Durante l'esecuzione di una query GraphQL, se contiene uno qualsiasi degli elementi dello schema selezionati nella Lista di Controllo degli Accessi, le regole scelte vengono valutate.

Se una regola non viene soddisfatta, l'accesso a quell'operazione, campo o direttiva viene negato, e possiamo configurare il modo in cui l'API deve fornire la risposta:

  • Modalità pubblica: Fornisce un messaggio di errore all'utente, indicando perché l'accesso è negato
  • Modalità privata: Il messaggio di errore indica che l'operazione, il campo o la direttiva non esiste

Ad esempio, in modalità pubblica, potremmo ottenere questa risposta:

{
  "errors": [
    {
      "message": "You must have role 'author' to access field 'title' for type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

Mentre in modalità privata potremmo ottenere questa risposta:

{
  "errors": [
    {
      "message": "There is no field 'title' on type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

Elenco delle regole di Controllo degli Accessi

L'estensione fornisce le seguenti regole di Controllo degli Accessi:

  • Disabilita l'accesso
  • Concedi l'accesso solo se l'utente è connesso o disconnesso
  • Concedi l'accesso solo se l'utente possiede un determinato ruolo
  • Concedi l'accesso solo se l'utente possiede una determinata capacità