Configurar o schema
Configurar o schemaConsultando campos de dados 'sensíveis'

Consultando campos de dados 'sensíveis'

O schema GraphQL deve encontrar um equilíbrio entre campos públicos e privados, a fim de evitar expor informações privadas em uma API pública.

Por padrão, todos os campos do schema GraphQL só podem acessar dados públicos. Por exemplo, posts só pode recuperar posts com status "publish".

Além disso, podemos adicionar campos de dados "sensíveis" e campos de input ao schema, destinados a ser usados apenas pelo administrador, habilitados para um custom endpoint ou persisted query específico, que também podem buscar dados privados.

Por exemplo, o argumento do campo posts(filter:) conterá um input field adicional status, que nos permite recuperar posts não publicados (ex.: posts com status "pending", "draft" ou "trash") para qualquer usuário. Da mesma forma, o schema exporá o campo Post.status, para visualizar esse dado.

Lista de elementos de dados "sensíveis"

Os elementos abaixo (entre outros) são, por padrão, tratados como dados privados:

User:

  • email
  • roles
  • capabilities
  • metaKeys

Custom Posts:

  • status
  • wpAdminEditURL
  • hasPassword
  • password
  • rawContent
  • rawTitle
  • rawExcerpt
  • metaKeys

Comments:

  • status
  • rawContent
  • metaKeys

Taxonomies:

  • metaKeys

Custom Post Mutations:

  • input authorBy

Menu Items:

  • rawTitle

Substituindo a configuração padrão

Os elementos listados acima podem ser tornados públicos.

Na página de Configurações, na aba correspondente a cada um, há uma caixa de seleção para configurar se tratá-los como "sensíveis" ou "normais":

Configurações para tratar o e-mail do usuário como dado 'sensível'
Configurações para tratar o e-mail do usuário como dado 'sensível'

Inspecionando os elementos de dados "sensíveis" via introspecção do schema

A propriedade isSensitiveDataElement é adicionada ao campo extensions durante a introspecção do schema. Para descobrir quais são os elementos de dados "sensíveis" do schema, execute esta query:

query ViewSensitiveDataElements {
  __schema {
    types {
      name
      fields {
        name
        extensions {
          isSensitiveDataElement
        }
        args {
          name
          extensions {
            isSensitiveDataElement
          }
        }
      }
      inputFields {
        name
        extensions {
          isSensitiveDataElement
        }
      }
      enumValues {
        name
        extensions {
          isSensitiveDataElement
        }
      }
    }
  }
}

Em seguida, procure por entradas com "isSensitiveDataElement": true nos resultados.

Adicionando elementos de dados "sensíveis" aos endpoints

A adição de elementos de dados "sensíveis" ao schema pode ser configurada da seguinte forma, em ordem de prioridade:

Modo específico para o custom endpoint ou persisted query, definido na configuração do schema

Adicionando elementos de dados sensíveis ao schema, configurado na Schema configuration

Modo padrão, definido nas Configurações

Se a configuração do schema tiver o valor "Default", ele usará o modo definido nas Configurações:

Configuração dos elementos de dados sensíveis para a schema configuration, nas Configurações
Configuração dos elementos de dados sensíveis para a schema configuration, nas Configurações

Quando usar

Use sempre que for permitido expor informações privadas, como ao construir um site estático, buscando dados de uma instância WordPress local (ou seja, não uma API pública).