Comment déboguer les autorisations dans Drupal 7?
J'utilise des rapports de base, des journaux d'erreurs, des journaux d'erreurs de module de développement, des blocs de traçabilité et des autorisations d'accès aux nœuds, mais parfois cela ne suffit pas. Que dois-je vérifier pour savoir pourquoi certains champs, vues ou blocs ne sont pas affichés pour un utilisateur?
J'ai également découvert qu'il existe un module pour Drupal 6 permettant de créer des rapports sur les autorisations, mais il n'est pas disponible pour Drupal 7.
J'utilise divers modules tiers liés aux autorisations:
- devel node access 7.x-1.x-dev
- fast permissions administration 7.x-2.0
- organic groups access control 7.x-1.x
- profile2 group access 7.x-1.x-dev
- ur-node access 7.x-1.x-dev
Réponses:
Une façon de faire est de créer un module personnalisé, d’imprimer les informations d’accès sur chaque page, chaque nœud, chaque bloc.
La fonction menu_get_item () renvoie un élément de routeur qui possède la propriété access_arguments pour la page actuelle.
Ensuite, vous pouvez hook_page_alter, pour afficher les informations d'accès en haut de chaque page.
Ensuite, vous pouvez afficher les informations sur les autorisations de blocage comme ceci:
Et ainsi de suite, fondamentalement le même concept, vous pouvez faire la même chose pour le noeud, la forme, les vues. J'espère que cela t'aides.
la source
yourmodule_get_page_access()
n'ont aucun sens, vous pouvez jeter un coup d'œil sur$router_item['access_callback']
, puis rechercher la fonction portant ce nom dans les modules appropriés, afin de voir ce qui se passe là-dedans. Très bonne réponse.Editez le fichier principal du module utilisateur; recherchez la
user_access()
fonction, ajoutez 2 lignes avant l'return
instruction et surveillez le journal des erreurs PHP.la source
error_log
ne sort pas à l'écran. Pour mon installation, il a écrit dans le journal des erreurs Apache. php.net/manual/fr/function.error-log.phpIl semble que vous ayez déjà tous les outils à base d'interface graphique pour résoudre les problèmes d'autorisations. Une astuce plus avancée (et probablement plus difficile) que j'ai utilisée efficacement par le passé est la suivante:
Dans de nombreux cas, les requêtes générées par Views sont plutôt complexes (choc plein de jointures) et leur construction manuelle prendrait un peu plus de temps (en plus, elle serait un peu plus sujette aux erreurs). Cette approche garantit également que vous testez par rapport à ce que voit l'utilisateur. Si des modules d'autorisations sont activés (qui utilisent les autorisations principales de Drupal), leurs jointures de table s'affichent dans la requête utilisée par Views. Une fois cette requête obtenue, je la modifie pour montrer combien de nœuds de type de contenu x sont autorisés pour le rôle x, par exemple. C'est aussi précis et précis que le rapport peut en obtenir. Et ce sont mes "rapports avancés".
la source
Avec Drupal, je dois parfois utiliser un débogueur (xdebug avec netbeans). Beaucoup de fonctions sont appelées indirectement, rendant presque impossible de suivre ce qui est réellement ajouté globalement en lisant le code, en imprimant une trace en arrière ou en vérifiant la sortie finale.
la source