Bagaimana cara men-debug izin di Drupal 7?
Saya menggunakan core reporting, error logs, devel module error log, backtrace dan blok izin akses node tetapi kadang-kadang tidak cukup. Apa lagi yang harus saya periksa untuk mengetahui mengapa bidang, tampilan, atau blok tertentu tidak ditampilkan kepada pengguna?
Saya juga menemukan ada modul untuk Drupal 6 untuk melaporkan izin yang disebut tetapi tidak tersedia untuk Drupal 7.
Saya menggunakan berbagai modul pihak ketiga terkait izin:
- 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
Jawaban:
Salah satu cara yang dapat Anda lakukan adalah membuat modul khusus, mencetak info akses pada setiap halaman, setiap node, setiap blok.
fungsi menu_get_item () mengembalikan item router yang memiliki properti access_arguments untuk halaman saat ini.
Kemudian Anda dapat hook_page_alter, untuk menampilkan info akses di atas setiap halaman.
Selanjutnya Anda dapat menampilkan info izin blokir seperti ini:
Dan seterusnya, pada dasarnya konsep yang sama, Anda dapat melakukan hal yang sama untuk simpul, bentuk, pandangan. Semoga ini membantu.
sumber
yourmodule_get_page_access()
tidak masuk akal, Anda dapat melihat$router_item['access_callback']
dan kemudian mencari fungsi dengan nama itu di modul yang relevan untuk melihat apa yang terjadi di sana. Jawaban yang bagusEdit file utama modul Pengguna; temukan
user_access()
fungsinya, tambahkan 2 baris sebelumreturn
pernyataan, dan pantau log kesalahan PHP.sumber
error_log
tidak menampilkan ke layar. Untuk instalasi saya, itu menulis ke log kesalahan apache. php.net/manual/en/function.error-log.phpSepertinya Anda sudah memiliki semua alat berbasis GUI untuk memecahkan masalah izin. Satu trik lebih maju (dan mungkin lebih sulit) yang saya gunakan secara efektif di masa lalu adalah:
Saya banyak kasus permintaan yang dimuntahkan Views agak kompleks (shock penuh bergabung) dan untuk membangun mereka secara manual akan mengambil sedikit lebih banyak waktu (ditambah itu akan sedikit lebih rawan kesalahan). Juga pendekatan ini memastikan bahwa Anda menguji terhadap apa yang dilihat pengguna. Jika Anda memiliki modul izin yang diaktifkan (yang memanfaatkan izin inti Drupal), tabel mereka akan muncul di kueri yang digunakan oleh Views. Setelah saya mendapatkan kueri ini, saya mengubahnya untuk menunjukkan berapa banyak node tipe konten x yang diizinkan untuk peran x, misalnya. Ini seakurat dan berbutir halus seperti yang bisa didapat dari pelaporan. Dan itu adalah laporan "tingkat lanjut" saya.
sumber
Dengan Drupal saya harus menggunakan debugger beberapa kali (xdebug dengan netbeans). Banyak fungsi yang disebut secara tidak langsung membuat hampir tidak mungkin untuk mengikuti apa yang sebenarnya ditambahkan secara global dengan hanya membaca kode, mencetak backtrace atau memeriksa hasil akhir.
sumber