Limiter la liste des nodes aux content-types autorisés dans les permissions

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 la communauté Drupal,

Je cherche à faire quelque chose qui à priori devrait être assez simple mais décidément je n'arrive pas à bien comprendre le système de permissions de Drupal.

J'ai créé des utilisateurs qui sont assignés à des roles, et ces roles n'ont les droits de création/édition/effacement que sur certains "content-types".

Lorsque je m'enregistre avec un de ces utilisateurs, je n'ai bien accès qu'à la création des nodes qui lui ont été assignés.
Par contre dans la liste ( celle qu'on quand on clique sur "find content" ) tous les contenus apparaissent, tous sans exception, y compris les contenus pour lesquels l'utilisateur n'a pas de droits.

C'est comme si Drupal donnait une permission de lecture universelle à tous les utilisateurs, peu importe les roles qui leur ont été assignés.

J'ai fait pas mal de recherches sur le web et je n'ai pas trouvé de solution précise.

J'ai pu lire ça et là qu'il était possible de filtrer les noeuds affichés en utilisant le module "administation_views".
Je l'ai donc installé mais je ne trouve pas le bon critère de filtre à utiliser pour n'afficher que les contenus sur lesquels l'utilisateur à les droits de création.

Avez-vous une solution ?

Merci

Gabriel

Forum : 
Version de Drupal : 

"Drupal donnait une permission de lecture universelle à tous les utilisateurs", c'est bien ça par défaut.

Les permissions ne gère que les actions de création / modification / suppression.

Pour gérer les accès en lecture, il faut ajouter un module tel que content_access (https://www.drupal.org/project/content_access) ou nodeaccess (https://www.drupal.org/project/nodeaccess)

Merci Vincent,

J'ai tenté la solution du module "Content Access".

J'ai bien compris comment gérer les droits mais je ne peux assigner des content-types spécifiques aux rôles que si ce rôle n'a pas déjà le droit "Administer content". Et si je n'active pas le droit "Administer content", l'utilisateur ne peut plus accéder à la liste des contenus, la page renvoie un "access denied".

En clair, si je veux avoir accès aux droits fournis par "content access" je dois désactiver "Administer content" mais ne pas activer ce doit provoque un "access denied" sur la liste des contenus.

Je me mords un peu la queue :-s

Gabriel

Une solution serait peut-être alors de faire une vue qui liste tous les contenus.
Comme la vue va utiliser le contrôle d'accès, l'utilisateur ne devrait voir que les contenus autorisés.

En quelques sorte ça revient à recoder / refaire la page de gestion de contenu avec Views. En mettant des filtres exposés, l'utilisateur pourra filtrer sur le type de contenu, etc.

Malheureusement ça ne change absolument rien :-(

Le module "administration views" a besoin des droits "Access the content overview page" pour fonctionner et ce droit donne accès à tous les contenus, peu importe ce qui est configuré dans les "Node Access".

C'est décidément très très compliqué pour une fonction qui pourrait sembler basique, je me demande même si quelqu'un est déjà arriver à s'en servir :-(

Bon, finalement j'en ai eu marre je suis directement allé changer dans le module node.admin pour modifier la query qui affiche les noeuds par user. C'est sale mais j'ai pas trouvé autre chose...

Mais merci pour toutes tes réponses ;-)

Gabriel