Droits d'accès, quelques précisions

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.

Ce message n'est pas écrit dans l'intention de demander de l'aide mais seulement dans le but de faire partager quelques connaissances sur les droits d'accès de Drupal (4.7.x).

  • Le premier utilisateur (le numéro 1, qu'importe son nom) créé n'a aucune limitation de droit d'accès.
  • Les rôles "anonymous user" et "authenticated user" sont spéciaux, ils sont automatiquement attribués aux utilisateurs.
    • Si un utilisateur n'est pas identifié, il obtient le rôle "anonymous user".
    • Si un utilisateur est identifié, quels que soient les rôles qui lui sont affectés, il obtiendra également le rôle "authenticated user", mais pas le rôle "anonymous user" !

En conséquence, si vous attribuez un droit à "anonymous user" et à aucun autre rôle, les utilisateurs identifiés n'auront pas ce droit.

Enfin, je tenais juste à signaler un bug du module node, sur node/add, la page affiche tous les contenus et pas seulement ceux que l'utilisateur peut créer. Plus d'information et les patchs (4.7.4, 4.7.5 et 4.7.6) sur http://drupal.org/node/92265.

Version de Drupal : 

Concernant ce dernier bug, je ne vois pas en quoi il y a un bug : node_access('create', $type) fait appel à module_invoke(node_get_base($type), 'access', 'create', $type), comme prévu. Par contre, si l'utilisateur a le droit 'administer nodes', il voit et peut créer n'importe quel type de node.

Pour moi il n'y a pas de bug (en tout cas en regardant le code source).

Oui, théoriquement.

Sauf que ça ne fonctionne pas comme ça devrait ! ;-)

J'ai rencontré le problème sur le site que je développe. Le contenu affiche tous les types de noeuds, quel que soit le rôle de l'utilisateur. Par contre le menu système "Créer un contenu" n'affiche que les noeuds que l'utilisateur peut créer (comme on s'y attend).

Je crée mes types de noeuds avec CCK.

Pour chaque type créé, CCK ajoute de nouveaux droits d'accès. Par exemple pour un type "brève", CCK ajoute les droits :

  • create content_brve content
  • edit content_brve content
  • edit own content_brve content

Cela permet de sélectionner quels rôles peuvent créer et modifier quels types de noeuds.

J'ai testé sur Drupal 5, cela fonctionne parfaitement.

J'en ai profité pour regarder s'il n'y avait pas un problème du coté de CCK, mais tout m'a l'air correct.

La dernière chose que je vois, c'est que la permission 'administer nodes' donne le droit de créer tout type de contenu. Es-tu sûr que tes utilisateurs n'ont pas cette permission?

Absolument certain !

Comme je le disais, le menu système n'affichait que les types de noeuds pouvant être créés par l'utilisateur mais pas la page node/add.

J'ai d'ailleurs essayé de cliquer sur un des noeuds proposés par la page node/add avant patch, et je tombe sur une page indiquant que l'utilisateur n'a pas les droits suffisants.

Pour info, je suis actuellement sous Drupal 4.7.

Bizarre, j'ai développé des sites avec des nodes CCK et Drupal 4.7.x et la page node/add affiche uniquement les nodes que l'utilisateur en cours peut créer.

Cela dit, j'ai mis à jour régulièrement mes install de Drupal, peut être que ça vient d'une des premières version (4.7.1 ? 4.7.2 ? ...)

J'ai peut-être une utilisation particulière de Drupal qui ne doit pas passer.

Entre autres choses je vide le cache menu avant l'affichage de mes pages car les alias d'URL ne sont pas toujours remplacés correctement (en gros j'obtenais des liens node/99999 au lieu d'obtenir l'alias que j'avais défini, mais pas de manière systématique, or mon thème se base dessus).

J'ai commencé Drupal à la 4.7.3 et l'ai upgradé à chaque version.

La page de selection des noeuds (accessible par node/add) est en fait gérée directement par le système de menus. Le système de menu n'a peut être pas intégré des changements. Est-ce que se rendre sur la page de menus ne résoudrait pas le problème?

@Zigazou
Je ne vois pas comment le patch proposé dans #92265 pourrait résoudre le problème. Le résout-il vraiment?

Je n'ai pas cherché à approfondir pour tout te dire. Toujours est-il que sans le patch #92265, je vois tous les types de noeuds sur node/add, avec le patch je ne vois que les noeuds que l'utilisateur peut créer.

Tu dis que node/add est gérée directement pas le système de menus ? Pourtant je l'ai vue dans node.module ?

Bien vu, rien à dire, well done :-)
Aïe, pas taper, pas taper !
Mea grosse culpa

<?php
 
for($i=0;$i<100;$i++) {
    echo
"Damz est trop fort\n";
  }
?>

M'enfin c'est quand même bizarroïde comme schmurtz ;-)

Et encore merci

Bonjour,

J'ai effacé par erreur les rôles "anonymous user" et "authenticated user" depuis phpMyAdmin car le module LDAP intégration m'avais importé des centaines de rôles dont je voulais me débarasser.

Comment les recréér. Si je le fais à la main en redonnant les noms d'origine, ca ne résoud rien.
Qu'ont ils de particulier ?

Merci par avance