web-dev-qa-db-fra.com

Comment permettre aux utilisateurs de visualiser les nœuds non publiés qu'ils n'ont pas créés?

J'ai créé deux rôles: éditeur et réviseur.

L'éditeur doit uniquement créer des nœuds non publiés; à la place, Reviewer doit publier et afficher ces nœuds.

Comment faire pour que les utilisateurs avec un rôle voient les nœuds non publiés? Si je définis l'autorisation " Accéder à la page de présentation du contenu ", les utilisateurs avec ce rôle peuvent modifier tout le contenu et je ne le veux pas.

J'ai essayé le module View unpublished , mais il a un problème, comme indiqué dans Voir les règles d'accès aux pauses non publiées définies par Views .

Comment permettre aux utilisateurs de visualiser les nœuds non publiés qu'ils n'ont pas créés?

5
kb8

Solution 1

Je voudrais " définir les autorisations" Accéder à la page de présentation du contenu " ...", et combiner cela avec l'utilisation du module Rules pour empêcher " le Le réviseur peut modifier tout le contenu ". Lisez la suite pour plus de détails sur la façon de le faire.

Créer une règle (en utilisant le module Rules ), c'est une variante de la règle que j'ai incluse (au format d'exportation) dans ma réponse à la question sur " Comment restreindre l'accès à un nœud via node/12 et autoriser l'accès via un chemin d'accès tel que contenu/autre? ".

Voici les modifications apportées à cette règle pour qu'elle fonctionne également dans ce cas:

  • Ajouter /edit à la fin, il y a déjà quelque chose comme node/% (Je suppose que lorsque quelqu'un essaie de modifier un nœud, il utilise un nœud avec /edit à la fin, bien que toute variation de cela devrait fonctionner de la même manière).
  • Ajoutez une règle ' Condition' pour vérifier que l'utilisateur actuel essayant de faire une telle modification N'A PAS le rôle "Editeur".
  • Vous devez probablement également ajouter une autre condition de règles comme "le contenu est de type" (c'est-à-dire 'article' dans votre cas, quelque chose qui n'est pas mentionné dans votre question d'origine, mais dans un commentaire supplémentaire). De cette façon, l'action de règles ne s'applique PAS à tout autre type de contenu.
  • Modifiez le "Message" (dans les règles ' Action') en quelque chose qui correspond à vos besoins.
  • Modifiez les règles ' Action' pour répondre à vos propres exigences, par exemple pour émettre une redirection vers une autre page.

Notez que le Rules Event est "Drupal is Initializing" ... Sinon vous êtes, bien sûr, "trop ​​tard": vous ne voulez pas que la règle soit déclenchée après la session d'édition déjà commencé, il devrait être déclenché avant cela. C'est-à-dire lorsque Drupal se prépare à démarrer une session d'édition.

N'ont pas expérimenté/essayé de créer cette règle (= variation de la règle dans la réponse que j'ai mentionnée ci-dessus). Mais je suis sûr que ça marchera.

Vous pouvez également consulter ma réponse à " https://drupal.stackexchange.com/questions/182958/how-to-limit-appearance-settings-based-on-roles-permissions/182959#182959 "pour un autre exemple de règle, qui utilise des techniques similaires à celles dont vous auriez besoin ici.

Solution 2

Solution 1 devrait fonctionner, mais sa faiblesse est qu'il est basé sur "Bypass Content Access Control". Personnellement, je n'aime pas ça non plus. Je suis donc d'accord avec votre commentaire à ce sujet (un commentaire qui a été supprimé par modération). Mais bon, c'est "une" solution pour répondre "à votre" question (originale).

Si c'était à moi de mettre en œuvre une "vraie" solution pour le défi que vous essayez de résoudre, je choisirais un plan b, comme détaillé ci-dessous.

Jetez un œil à mes réponses à l'une de ces questions:

Ces réponses expliquent comment vous pouvez implémenter un flux de travail qui est assez (mais pas exactement) similaire à ce que vous recherchez.

Pour ce faire, il vous faut "uniquement" utiliser ces modules (et les types de contenu habituels):

Et en utilisant une telle approche, elle ne nécessite pas de modules tels que " Webform " ou " Workbench " (modules qui sont généralement impliqués pour ces types de workfows).

Si vous n'êtes pas familier avec Rules , consultez les didacticiels vidéo Learn the Rules framework . Et/ou similaire ensemble de 8 tutoriels vidéo sur le module Flag .

Note : Cette "Solution 2" est aussi la façon dont j'ai implémenté une variante de votre question sur 1 de nos propres sites: elle part d'un Problème (= problème ou demande de fonctionnalité), évolue vers une recette (= instructions sur la façon pour que quelque chose fonctionne) et se termine par une solution logicielle (= un plugin ou plus, alors que la recette fait partie de la documentation). Node Convert et Content Access font la plupart du travail pour cela, et fonctionne même en D6 ...

3
Pierre.Vriens

Accès au conten

Ce module vous permet de gérer les autorisations pour les types de contenu par rôle et auteur. Il vous permet de spécifier des autorisations d'affichage, de modification et de suppression personnalisées pour chaque type de contenu . En option, vous pouvez activer les paramètres d'accès par contenu, afin de personnaliser l'accès pour chaque nœud de contenu.

enter image description here

2
No Sssweat

Vous pouvez utiliser npublished_node_permissions qui crée des autorisations granulaires pour chaque rôle qui peuvent être modifiées par un administrateur sous admin/people/permissions pour afficher les nœuds non publiés par type de contenu.

Il prend également soin des autorisations de vues, par exemple admin/content view filtrera correctement les nœuds conformément aux autorisations de rôle de l'utilisateur.

REMARQUE: il existe un bogue connu avec les sites et les vues multilingues D8 qui pourrait créer des résultats indésirables.

1
GiorgosK