Ce que je dois faire
J'ai certains champs de compte d'utilisateur qui doivent être réservés à l'administrateur (lecture/écriture/modification). Par exemple, l'adresse IP utilisée pour l'enregistrement.
Donc, je veux restreindre l'accès aux administrateurs.
État actuel des autorisations de champ dans Drupal 8 (au 19 février 2016)
Vous êtes coincé à le faire dans le code, mais le module Exemples inclut un field_permissions
exemple de module.
Ceci est un vieux fil, mais comme je suis tombé sur le même problème, ne voulant pas utiliser un module lourd pour quelques champs, j'ai rencontré cet article (après celui-ci, j'ai donc pensé pouvoir le partager): https://atendesigngroup.com/blog/form-and-view-modes-vs-field-access-drupal-8
À partir d'autres exemples, celui-ci s'occupe du contexte du cache.
Faites juste attention aux commentaires ci-dessous et à quelques autres petites erreurs dans l'exemple de code. Un code correct et fonctionnel ressemble à ceci:
function YOUR_MODULE_NAME_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) {
$result = AccessResult::neutral();
if ($field_definition->getName() == 'field_we_care_about') {
if ($operation == 'edit' && !in_array('administrator', $account->getRoles())) {
$result = AccessResult::forbidden();
}
}
return $result->addCacheContexts(['user.roles:administrator']);
}
Autorisations de champ a une version bêta pour D8 maintenant. Il vous permet de définir des autorisations par champ.