Autoriser l'accès à certaines pages de l'administration et pas à d'autre

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, (rebonjour, désolé j'ai dû reposter la même question car je n'arrivais pas à éditer le sujet de mon premier message)

Mon problème est simple (la solution peut-être un peu moins… :)) : je souhaiterais que les utilisateurs identifiés de mon site puissent avoir accès à certaines pages de configuration du site (choix du thème et informations du site) sans avoir accès au reste de l’administration.

J’ai trouvé un début de solution avec la suite de modules Menu Access, Menu Items Access et Admin Access.

J’arrive à afficher dans mon menu navigation que les liens qui m’intéressent : thèmes et informations. Jusque là tout va bien, en revanche je ne peux toujours pas accéder à ces pages en cliquant sur ces liens : normal ces modules n’agissent que sur l’affichage ou pas des menus et des liens. Je suis obligé, pour se faire, d’aller dans les droits d’accès et de cocher l’accès aux pages d’administration et à la configuration du site. En faisant cela, j’accède dorénavant aux pages souhaitées. Jusqu’ici tout va bien… sauf que lorsque je saisis l’adresse d’une autre page de l’administration, j’arrive à accéder quand même à cette page ; normal puisque comme dit plus haut ce n’est pas le rôle de ces modules (si j’ai bien compris), y compris Admin Access, qui, si j’ai bien saisi, ne fait que faire disparaître les liens vers les sous-pages d’admin dans les pages d’index admin (par exemple la page /admin).

Alors questions à 10000 euros : comment faire pour réellement bloquer l’accès au reste de l’administration ? Existe-t-il un module, une astuce, ou faut-il mettre les mains dans le cambouis ?

Merci d’avance pour vos lumières ;)

Fab.

Version de Drupal : 

Merci pour ta réponse.
Le problème est justement là : à cette adresse (/admin/user/permissions) on ne peut que bloquer ou débloquer l'intégralité des pages admin, et pas seulement certaines pages. Moi je souhaiterais ne rendre accessible que les pages "Thèmes" et "Informations"
Quels sont les modules dont tu parles ?

Je suis comme toi en train de comprendre comment fonctionne les droits d'accès et la gestion de workflow. Je n'ai pas encore essayé de faire ce que tu souhaites, mais je devrais le faire dés que j'ai réussi à gérer mes workflow. Pour l'instant une idée serait de créer un menu contenant les infos que tu souhaites publié à un rôle et lui donner accès, tout en bloquant l'accès au menu de navigation. Je n'ai pas mieux à te proposer vu mon niveau de connaissance actuelle. Par contre, si tu trouves une solution digne de ce nom, pourrais-tu m'en faire part svp ?

Bon courage.

C'est ce que j'ai fait pour les menus en utilisant la suite de modules Menu Access, Items Access et Admin Access. Donc effectivement j'arrive bien à n'afficher que ce je souhaite en fonction des rôles. Mais le problème c'est que pour pouvoir accéder à la page d'administration des thèmes par exemple, on est obligé de débloquer toute l'administration dans les droits d'accès. La conséquence est que n'importe quelle page de l'administration est accessible en saisissant son url dans le navigateur. Alors oui effectivement les pages n'apparaissent pas dans le menu de navigation en fonction du rôle, mais elles restent accessibles pour qui connaît les chemins vers ces pages...

Tiens nous au courant si tu as une solution de ton côté. Merci.

Bon courage également.

On est dans la même galère. Par la suite, j'aimerai que mes rôles 'editeur' puisse gérer le workflow. Bon j'en suis encore à comprendre comment les modules 'workflow' et 'rules' fonctionne mais je n'ai pas réussi à faire afficher un menu donnant la gestion des workflow à un rôle.

Ceci dit, j'ai cherché un module pour faire ce que tu/on souhaite/s et apparemment ce module pourrait le faire : http://drupal.org/project/delegate_menu_admin

Ces modules ont attiré mon attention :
- http://drupal.org/project/menu_per_role
- http://drupal.org/project/menu_admin_per_menu

Par contre, pourrais-tu me dire pourquoi 'Menu Access', 'Item Access' et 'Admin Access' ne répondent pas à ces besoins, et à quoi ils servent alors ?

Pour le workflow j'ai pas encore testé (mais ça ne saurait tarder). Concernant les modules que tu as trouvé, ils ne font que permettre à l'administrateur du site de déléguer la gestion de certains menus qu'il aurait explicitement indiqué à un ou des utilisateurs de son site. C'est à dire qu'il leur donne la possibilité d'ajouter, désactivé, supprimer des items de menu. C'est pas vraiment ce qu'on cherche (enfin pas moi en tout cas).

‘Menu Access’ et ‘Item Access’ permettent de spécifier pour tel ou tel rôle, quels sont les menus et items de menus qui seront accessibles. Dans mon cas je veux que les utilisateurs identifiés puissent changer de thème, donc je me rends dans la gestion des menus (en tant que super admin biensurs) et je clique sur l'item "Thèmes" dans le menu de navigation pour pouvoir aller cocher le/les rôles utilisateurs qui auront le droit de voir cet item de menu. Et c'est tout, ça ne bloque pas l'accès réel aux pages : on peut toujours y accéder en saisissant leur url dans le navigateur.

'Admin Access' lui ne fait que gérer l'affichage des items dans les pages index d'administration (comme la page /admin par exemple) en utilisant les réglages qu'on a fait avec 'Menu Access' et 'Items Access'. Exemple : si je ne permet d'afficher uniquement le lien vers la page d'administration des thèmes (avec Menu Access) pour le rôle "Utilisateurs identifiés", quand je m'identifie (avec un autre compte que l'admin biensurs) je ne verrais que ce lien dans la page /admin. Mais pareil, ça ne bloque pas l'accès aux autres pages.

Donc ces modules ne répondent qu'à une partie de notre besoin. L'autre partie serait de bloquer réellement l'accès aux pages d'admin choisies, comme avec 'Node Access' (qui fait partie de cette suite de modules), sauf que ça ne marche que pour les nodes de contenus apparemment.

Je comprends bien ce que tu veux faire mais j'avoue que c'est même incroyable que ce ne soit pas si évident que ça. Pourrais-tu me dire exactement les éléments que tu souhaites rendre accessible aux utilisateurs dans le menu de navigation ?

En attendant, j'ai trouvé ce module pour gérer les thèmes. Bon ça m'étonnerait que ça réponde à tes besoins, mais peut-être que ça te donnera des pistes. http://drupal.org/project/switchtheme

Force et Honneur

Je voudrais rendre accessible "Thèmes" et "Informations".

Merci pour le lien, ça a l'air d'être pas mal, mais manque toujours la possibilité de gérer les informations du site (slogan, etc...)

On va continuer les investigations... à mon avis ce que je souhaite faire nécessite de créer son propre module j'ai l'impression, car je n'en trouve pas qui correspondrait à mon besoin.

Oui, si tu as que des variables de ce type à modifier, autant créer ton propre module (si tu sais le faire, bien-sûr), c'est plus simple. En cherchant, je suis tombé sur ce module : http://drupal.org/project/role_theme_switcher.

Afin de mieux comprendre ce que tu souhaites faire, pourquoi tu souhaites changer le menu Informations ? Théoriquement, c'est le seul truc statique du site non ?

Tu sais, dans ces conditions, il serait tellement plus simple que tu fasses ton module, ce n'est pas très compliqué. Après tout, ce que tu souhaites faire est très simple, récupérer les champs d'une table et les modifier.

Bon courage !

Merci. Effectivement c'est que je finis par me dire. Je vais me pencher sur la question (après m'être débarassé d'un autre problème : comprendre le fonctionnement du module color pour les thèmes...) bref du pain sur la planche. Drupal c'est super (ou ça a l'air en tout cas) mais dur apprentissage...

Oui, je compatie à ta douleur, hier je me suis couché à 4H du mat, je bossais sur les workflow, revisionning, etc. Toujours pas compris d'ailleurs. Comme tu dis, c'est sympa drupal, ultra-puissant, mais c'est pas comme si tu cliques sur le bouton suivant d'une appli windows. Trop trop galère ! Entre les droits d'accès, les modules conflicutels, les rôles, les types de contenus, l'admin et les modules dit de workflow (rules, workflow, revisionning, moderation, etc.)... Un cauchemar !

C'est ce que je me dis mais je voudrais quand même vérifier qu'il existe pas un module qui fait ce que je veux histoire de ne pas réinventer la roue. Même si le fait de développer mon module me motive, ne serait-ce que pour continuer à me former sur Drupal. Mais j'ai quand même une contrainte de temps, alors bon... Tu me diras parfois le temps passer à chercher des modules, à les tester et comprendre comment ils fonctionnent finalement prend autant de temps que développer le sien. Je teste ceux là et te tiens au courant.
Merci de ton aide en tout cas.

YEEEEEAAAAAHHHHH !

Je viens de tester PermMill et c'est exactement ce que je cherchais. Je te le conseille vivement. Ce module crée une nouvelle page d'admin dans le menu "Droits d'accès" qui liste toutes les fonctions d'administrations (Informations, thèmes, réécriture des urls, Gestion des modules, etc...) et qui te permet, en cochant la case devant, de rajouter la fonction dont on souhaite gérer les droits, dans la page de gestion des droits d'accès. Il suffit ensuite de se rendre sur cette page pour cocher les rôles utilisateurs qui auront le droit d'accéder à cette fonction de gestion. Toutes les autres pages d'administration restent en accès refusé. C'est génial !!!! Cela va me faire gagner pas mal de temps.