Gérer les accès aux nodes grâce aux fields

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous et d'avance merci de votre aide !

Je m'arrache un peu les cheveux sur le problème suivant :

Mon site Drupal sert à gérer l'envoi et le suivit de dossiers qui sont en fait des fichiers PDF. Pour ce faire, il y a deux types de dossiers et 5 types d'utilisateurs (dont les relecteurs des dossiers).

L'utilisateur se connecte, et poste son dossier qui est en fait un node. Ensuite le relecteur vient envoyer des commentaires, qui peuvent contenir une nouvelle version du dossier et ainsi de suite jusqu'à sa validation.

Mon problème est le suivant : j'aimerais empêcher aux utilisateurs d'accéder aux nodes des autres grâce aux informations contenues dans leur profil. A l'inscription, c'est l'admin qui attribue un field "GROUPE DE TRAVAIL" et impossible pour l'utilisateur de le modifier. Il me faudrait donc au pire une méthode pour exclure de mes views les nodes d'auteurs n'ayant pas le même groupe de travail que l'utilisateur courant, au mieux un contrôle d'accès : vous n'êtes pas autorisé à voir ce dossier parce que ce n'est pas votre groupe de travail.

Si vous avez une solution, je suis preneur avec plaisir et vous remercie !

Version de Drupal : 

Je sais pas si c'est ca que tu veux mais tu pourrais faire :
- Un vocabulaire de taxonomy ( Groupe )
- Un champ avec entity_reference de ton node pdf vers cette taxo. Comme ca, quand tu créés ton node pdf tu peux le lié à 1 ou plusieurs groupe.
- Sur ton entité user tu créés un champ entity_ref vers la meme taxo. Et tu remplit ce champ pour chaque utilisateur

Comme ca tu met en relation le node et les utilisateurs via une taxo.

Et dans views tu peux filtrer tes nodes grace à un filtre qui compare le champ "groupe" des nodes avec le champ "groupe" de l'utilisateur connecté.

Au moins il ne verra pas les node qui ne sont pas dans ses groupes.

Après pour interdire l'accès à la modification d'un node en testant le système de groupe, il faudra coder. En tout cas je ne voit pas d'autres solutions.

Merci de ta réponse,
Donc un peu comme dans ce tutoriel là : https://www.drupal.org/node/200631
Ça revient à créer une taxonomie par groupe d'utilisateur, et à attribuer cette taxonomie à chaque node créer par tel utilisateur.
Ma question avec cette solution est celle de l'importation des utilisateurs, j'en ai 400 en gros, par groupes de 5, et s'il faut tout faire à la main un par un c'est l'enfer !

J'avais fait quelque chose de ce genre en me basant sur le module ABT (Access By Term).
On crée une taxonomie, avec des termes (un par groupe), et ce groupe de travail est assigné à l'utilisateur.

Chaque node est ensuite "taggé" également, et on gère les droits sur ce terme.

Pour nos besoins, on pouvait assigner plusieurs groupes à une personnes, par exemple si elle pouvait faire partie de plusieurs groupes.
Ceci permettait de recueillir des documents pour différents établissements scientifiques faisant partie du même groupe.

On peut donc gérer des droits par terme, et en combinant les rôles (rédacteur / relecteur) , limiter par exemple la mise à jour de son propre contenu pour le rédacteur, et la mise à jour de tous les contenus (du groupe) au relecteur.