J'utilise Drupal 7 et j'ai créé un nouveau type de contenu appelé "eBook" et j'ai créé un nouveau rôle appelé "MonthlySubscriber". Mon intention est d'autoriser uniquement les utilisateurs avec le "MonthlySubscriber" à voir les nœuds "eBook". Lorsque j'ai regardé les paramètres d'autorisation pour un rôle, j'ai vu les cases à cocher qui permettent de créer, modifier et supprimer des nœuds de ce type de contenu, mais il n'y a pas de cases à cocher pour afficher les nœuds.
Comment limiter les utilisateurs qui peuvent afficher les nœuds "eBook" aux seuls utilisateurs ayant le rôle "MonthlySubscriber"?
Voici un moyen simple de protéger les pages de nœuds (nœud / NID) contre les utilisateurs non privilégiés.
la source
hook_node_access
ne fonctionnera pas avec tout ce qui "répertorie" les nœuds, comme une vue. Vous pouvez donc restreindre l'accès à la vue danshook_node_access
, mais une vue ou une requête de nœud personnalisé peut toujours montrer ce nœud à l'utilisateur.hook_node_access
est plus utile pour le contrôle éditorial, pour contrôler les opérations de création / mise à jour / suppressionL'accès au contenu ne fonctionnait pas pour mon installation Drupal 7, j'ai donc utilisé les autorisations de vue de nœud à la place.
la source
Pour drupal 7, essayez celui-ci: Accès par terme
la source
La solution hook_menu_alter publiée ci-dessus par ya.teck fonctionne, mais entre en conflit avec le hook_node_access standard dans son nom de fonction. le hook_menu_alter n'est pas requis dans ce cas, et donc la réponse postée par Denis ci-dessus est à mon avis plus précise et la bonne manière. Modifier le menu_item comme cela est fait est le premier exemple référencé qui pourrait être encombré par un autre module plus bas dans le tuyau.
la source
J'ai utilisé un extrait de code trouvé dans la documentation de l' API D7 pour le hook hook_node_access .
Ce code accordera l'accès pour afficher le contenu "ebook" aux utilisateurs qui ont l'autorisation "voir ebook".
Vous avez besoin d'une nouvelle autorisation pour contrôler l'accès en implémentant hook_permission ().
En implémentant hook_node_access () Drupal peut accorder ou refuser l'accès au nœud.
D'autres autorisations (modification, suppression, etc.) peuvent être traitées via les autorisations Drupal normales.
Vous pouvez éventuellement supprimer le contenu de la vue d'ensemble de l'administrateur en implémentant hook_query_TAG_NAME_alter.
la source
Je préfère utiliser le module Node View Permissions . C'est plus simple que le module d'accès au contenu.
Comme dans D6, il ajoute les autorisations «Afficher tout contenu» et «Afficher son propre contenu» à tout type de contenu que vous choisissez.
Étapes à suivre:
/admin/config/content/node-view-permissions
et sélectionnez les types de contenu auxquels vous souhaitez limiter l'accès.Ensuite, accédez à
/admin/people/permissions#module-node_view_permissions
et sélectionnez les rôles dont vous souhaitez pouvoir afficher le contenu. Enregistrez les autorisations.Terminé!
la source