Domain Access¶
Le module Domain Access fournit un contrôle d'accès aux nœuds basé sur l'affectation aux domaines. Il permet de publier du contenu sur un ou plusieurs domaines, de restreindre l'édition par domaine et d'assigner des utilisateurs comme éditeurs par domaine.
Champs¶
Domain Access crée automatiquement deux champs sur chaque type de contenu et sur l'entité utilisateur :
| Champ | Type | Description |
|---|---|---|
field_domain_access |
Référence d'entité (domain) | Affecte l'entité à un ou plusieurs domaines. Obligatoire sur les nœuds, optionnel sur les utilisateurs. |
field_domain_all_affiliates |
Booléen | Lorsque coché, l'entité est visible sur (ou l'utilisateur peut modifier sur) tous les domaines. |
Un paramètre tiers sur field_domain_access contrôle si les nouvelles
entités reçoivent automatiquement le domaine courant comme valeur par défaut.
Système de contrôle d'accès aux nœuds¶
Domain Access implémente le système de node access grants de Drupal pour contrôler la visibilité et l'édition.
Grant realms¶
| Realm | Portée |
|---|---|
domain_id |
Contenu publié sur un domaine spécifique |
domain_unpublished |
Contenu non publié sur un domaine spécifique |
domain_site |
Contenu publié affecté à tous les affiliés (consultation uniquement) |
Lorsque le paramètre expérimental per-bundle grants est activé, des
realms supplémentaires comme domain_id:{bundle} et
domain_unpublished:{bundle} sont utilisés pour un contrôle plus fin.
Comment les grants sont attribués¶
Accès en consultation :
- Tous les visiteurs reçoivent un grant pour le domaine actif (
domain_id) et le realm global (domain_site). - Les utilisateurs disposant de la permission view unpublished domain
content et d'un accès au domaine reçoivent également le grant
domain_unpublished.
Accès en modification et suppression :
- Nécessite la permission edit domain content ou delete domain content.
- L'utilisateur doit être affecté au domaine (ou avoir all affiliates coché).
- Avec les per-bundle grants, des permissions par bundle comme update {bundle} content on assigned domains sont vérifiées à la place.
Note
Après avoir modifié les paramètres d'accès, reconstruisez les permissions
à /admin/reports/status/rebuild.
Permissions¶
Publication de contenu¶
| Permission | Description |
|---|---|
publish to any domain |
Publier du contenu sur tous les domaines et modifier le champ all affiliates. |
publish to any assigned domain |
Publier du contenu sur les domaines assignés à l'utilisateur. |
create domain content |
Créer du contenu sur les domaines assignés. |
create {bundle} content on assigned domains |
Contrôle de création par bundle. |
edit domain content |
Modifier du contenu sur les domaines assignés. |
update {bundle} content on assigned domains |
Contrôle de modification par bundle. |
delete domain content |
Supprimer du contenu sur les domaines assignés. |
delete {bundle} content on assigned domains |
Contrôle de suppression par bundle. |
view unpublished domain content |
Voir le contenu non publié sur les domaines assignés. |
Assignation des éditeurs¶
| Permission | Description |
|---|---|
assign domain editors |
Assigner des éditeurs aux domaines assignés à l'utilisateur. |
assign editors to any domain |
Assigner des éditeurs à n'importe quel domaine. |
Paramètres¶
Le formulaire de paramètres se trouve à /admin/config/domain/domain_access.
| Paramètre | Description |
|---|---|
| Move domain fields to advanced tab | Place les champs de domaine dans la barre latérale avancée du formulaire de nœud. |
| Keep advanced tab open | Ouvre l'onglet avancé par défaut. |
| Allow field removal (expérimental) | Permet de supprimer les champs Domain Access de types d'entités spécifiques. Nécessite une reconstruction des permissions. |
| Per-bundle grants (expérimental) | Active les node access grants par bundle pour un contrôle plus fin. |
Intégration Views¶
Domain Access enregistre plusieurs plugins Views :
| Type de plugin | ID | Description |
|---|---|---|
| Field | domain_access_field |
Affiche les domaines assignés sous forme de liens vers l'entité sur chaque domaine. |
| Filter | domain_access_filter |
Filtre par affectation de domaine (ManyToOne, supporte OR/NOT). |
| Filter | domain_access_current_all_filter |
Filtre le contenu disponible sur le domaine courant ou marqué comme all affiliates. |
| Argument | domain_access_argument |
Accepte un identifiant de domaine comme filtre contextuel. |
| Access | domain_access_editor |
Restreint un affichage Views aux utilisateurs pouvant modifier le contenu sur leurs domaines. |
| Access | domain_access_admin |
Restreint un affichage Views aux utilisateurs pouvant gérer les éditeurs sur leurs domaines. |
Bulk actions¶
Lorsqu'un nouveau domaine est créé, Domain Access enregistre automatiquement quatre configurations de bulk actions :
- Add content to {domain} / Remove content from {domain}
- Add editors to {domain} / Remove editors from {domain}
Quatre actions globales supplémentaires sont toujours disponibles :
- Assign to all affiliates / Remove from all affiliates (pour le contenu et les éditeurs).
Ces actions sont supprimées lorsque le domaine correspondant est supprimé.
Plugin de condition¶
Le plugin de condition domain_access évalue si un nœud est affecté à un ou
plusieurs domaines sélectionnés. Il peut être utilisé dans Rules, Block
Visibility et des systèmes similaires. La condition supporte la négation.
Hooks¶
Alter hooks¶
hook_domain_references_alter(&$query, $account, $context) — filtre la
liste des domaines disponibles dans les widgets de référence d'entité en
fonction des permissions et des affectations de domaine de l'utilisateur
courant.
Cycle de vie des entités¶
Domain Access vide son cache statique interne lors du presave et du predelete des entités, et crée automatiquement les champs lorsqu'un nouveau type de contenu est ajouté.
Accès aux champs¶
Le module restreint qui peut modifier les champs de domaine :
field_domain_accesssur les nœuds nécessite publish to any domain ou publish to any assigned domain.field_domain_accesssur les utilisateurs nécessite assign domain editors ou assign editors to any domain.field_domain_all_affiliatesnécessite la permission globale correspondante.
Services¶
| Service | Classe | Rôle |
|---|---|---|
domain_access.manager |
DomainAccessManager |
Vérification centrale des accès : grants de domaine, vérification des permissions, URLs du contenu. |
domain_access.helper |
DomainAccessHelper |
Aide à la création des champs et à l'installation. |