Jak debugować uprawnienia w Drupal 7?
Korzystam z podstawowych raportów, dzienników błędów, dzienników błędów modułów programistycznych, blokowania uprawnień dostępu do śledzenia i węzłów, ale czasami to nie wystarczy. Co jeszcze powinienem sprawdzić, aby dowiedzieć się, dlaczego pewne pola, widoki lub bloki nie są wyświetlane użytkownikowi?
Odkryłem również, że istnieje moduł dla Drupala 6 do raportowania o wywołanych uprawnieniach, ale nie jest on dostępny dla Drupala 7.
Korzystam z różnych zewnętrznych modułów powiązanych z uprawnieniami:
- 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
Odpowiedzi:
Jednym ze sposobów jest utworzenie niestandardowego modułu, drukowanie informacji o dostępie na każdej stronie, w każdym węźle, w każdym bloku.
Funkcja menu_get_item () zwraca element routera, który ma właściwość access_arguments dla bieżącej strony.
Następnie możesz hook_page_alter, aby wyświetlić informacje o dostępie na górze każdej strony.
Następnie możesz wyświetlić informacje o uprawnieniach do bloków w następujący sposób:
I tak dalej, w zasadzie ta sama koncepcja, możesz zrobić to samo z węzłem, formą, widokami. Mam nadzieję że to pomoże.
źródło
yourmodule_get_page_access()
nie mają sensu, możesz rzucić okiem,$router_item['access_callback']
a następnie wyszukać funkcję o tej nazwie w odpowiednich modułach, aby sprawdzić, co się tam dzieje. Świetna odpowiedź.Edytuj główny plik modułu użytkownika; znajdź
user_access()
funkcję, dodaj 2 wiersze przedreturn
instrukcją i monitoruj dziennik błędów PHP.źródło
error_log
nie wyświetla się na ekranie. W przypadku mojej instalacji zapisano go w dzienniku błędów Apache. php.net/manual/en/function.error-log.phpWygląda na to, że masz już wszystkie narzędzia oparte na GUI do rozwiązywania problemów z uprawnieniami. Jedną bardziej zaawansowaną (i prawdopodobnie trudniejszą) sztuczką, którą skutecznie stosowałem w przeszłości, jest:
W wielu przypadkach zapytania wyrzucane przez widoki są dość złożone (wstrząs pełen złączeń), a ich ręczne wykonanie zajęłoby trochę więcej czasu (a ponadto byłoby nieco bardziej podatne na błędy). Takie podejście zapewnia także testowanie pod kątem tego, co widzi użytkownik. Jeśli masz włączone moduły uprawnień (które korzystają z uprawnień podstawowych Drupal), ich sprzężenia w tabeli pojawią się w zapytaniu używanym przez Widoki. Po otrzymaniu tego zapytania poprawiam je, aby pokazać, na przykład, ile węzłów typu treści x jest dozwolonych dla roli x. Jest tak dokładny i precyzyjny, jak to tylko możliwe. A to są moje „zaawansowane” raporty.
źródło
Z Drupalem muszę czasem używać debuggera (xdebug z netbeans). Wiele funkcji jest wywoływanych pośrednio, co sprawia, że prawie niemożliwe jest śledzenie tego, co naprawdę dołącza się globalnie, tylko poprzez czytanie kodu, drukowanie śladu wstecznego lub sprawdzanie końcowego wyniku.
źródło