Interroger les champs de données 'sensibles'
Le schéma GraphQL doit trouver un équilibre entre les champs publics et privés, afin d'éviter d'exposer des informations privées dans une API publique.
Par défaut, tous les champs du schéma GraphQL ne peuvent accéder qu'à des données publiques. Par exemple, posts ne peut récupérer que des articles avec le statut "publish".
De plus, nous pouvons ajouter des champs de données "sensibles" et des champs d'entrée au schéma, destinés à être utilisés uniquement par l'administrateur, activés pour un custom endpoint ou une persisted query spécifique, qui peuvent également récupérer des données privées.
Par exemple, l'argument de champ posts(filter:) contiendra un input field supplémentaire status, qui nous permet de récupérer des articles non publiés (p. ex. : articles avec le statut "pending", "draft" ou "trash") pour n'importe quel utilisateur. De même, le schéma exposera le champ Post.status, pour visualiser cette donnée.
Liste des éléments de données "sensibles"
Les éléments ci-dessous (entre autres) sont, par défaut, traités comme des données privées :
User:
emailrolescapabilitiesmetaKeys
Custom Posts:
statuswpAdminEditURLhasPasswordpasswordrawContentrawTitlerawExcerptmetaKeys
Comments:
statusrawContentmetaKeys
Taxonomies:
metaKeys
Custom Post Mutations:
- input
authorBy
Menu Items:
rawTitle
Remplacer la configuration par défaut
Les éléments listés ci-dessus peuvent être rendus publics.
Dans la page des Réglages, dans l'onglet correspondant pour chacun, il y a une case à cocher pour configurer s'il faut les traiter comme "sensibles" ou "normaux" :

Inspecter les éléments de données "sensibles" via l'introspection du schéma
La propriété isSensitiveDataElement est ajoutée au champ extensions lors de l'introspection du schéma. Pour découvrir quels sont les éléments de données "sensibles" du schéma, exécutez cette requête :
query ViewSensitiveDataElements {
__schema {
types {
name
fields {
name
extensions {
isSensitiveDataElement
}
args {
name
extensions {
isSensitiveDataElement
}
}
}
inputFields {
name
extensions {
isSensitiveDataElement
}
}
enumValues {
name
extensions {
isSensitiveDataElement
}
}
}
}
}Puis recherchez les entrées avec "isSensitiveDataElement": true dans les résultats.
Ajouter des éléments de données "sensibles" aux endpoints
L'ajout d'éléments de données "sensibles" au schéma peut être configuré comme suit, par ordre de priorité :
Mode spécifique pour le custom endpoint ou la persisted query, défini dans la configuration du schéma

Mode par défaut, défini dans les Réglages
Si la configuration du schéma a la valeur "Default", elle utilisera le mode défini dans les Réglages :

Quand utiliser
Utilisez-le chaque fois qu'il est permis d'exposer des informations privées, par exemple lors de la construction d'un site web statique, en récupérant des données depuis une instance WordPress locale (c'est-à-dire pas une API publique).