user_access ($ string, $ account = NULL)
$ string: Izin, seperti "kelola node", sedang diperiksa.
Bagaimana saya bisa mengetahui daftar nilai $ string yang tersedia untuk user_access()
fungsi?
Selama setiap modul dapat mendefinisikan izin mereka sendiri, tidak ada daftar "ketat" dari string tersebut. Anda perlu "membangun" itu jika Anda benar-benar perlu memiliki daftar seperti itu secara terprogram.
Anda dapat menjalankan skrip ini di halaman / devel / php. (Tentu saja, Anda memerlukan modul Devel .)
// Render role/permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
print_r($module);
// Drupal 6
// if ($permissions = module_invoke($module, 'perm')) {
// print_r($permissions);
// }
// Drupal 7
if ($permissions = module_invoke($module, 'permission')) {
print_r($permissions);
}
}
Seperti yang dikatakan @Berdir, cara termudah untuk melihat izin mana yang tersedia adalah dengan pergi ke izin admin / orang / izin di Drupal 7.
Masalah yang terus saya temui adalah bahwa saya tidak pernah tahu string apa yang saya butuhkan untuk menyediakan sebagai 'argumen akses' untuk benar-benar memanfaatkan izin tersebut. Nah, inilah cara Anda menemukan nama string untuk izin yang ingin Anda gunakan (Contoh ini menggunakan Google Chrome.)
Langkah pertama. Buka admin / orang / izin temukan izin yang ingin Anda gunakan dan klik kanan pada kotak centang di sebelah kanan izin yang ingin Anda gunakan. Pilih 'Periksa Elemen' atau lihat sumbernya.
Selanjutnya cari nilai kotak centang dan catat nilainya. (Dalam hal ini stringnya adalah 'buat konten kupon')
Ini adalah string yang perlu Anda berikan sebagai argumen akses di hook_menu ()
Kode Contoh: (item yang tidak relevan dihapus, jangan lupa judul, panggilan balik, dll. Di hook_menu ())
function fsrsys_menu() {
$items = array();
$items['my-custom-url'] = array(
'access callback' => 'user_access',
'access arguments' => array('create coupon content'),
);
return $items;
}
Ini adalah versi D7 dari jawaban Haza, dimodifikasi untuk menggunakan DSM alih-alih print_r dan meninggalkan modul yang tidak menerapkan hook_permission:
// Render permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
if ($permissions = module_invoke($module, 'permission')) {
// List only the modules that have permissions.
dsm($module);
dsm($permissions);
}
}
Anda dapat gunakan user_permission_get_modules()
fungsi, yang mengembalikan array dari semua izin yang ditentukan dan modul mereka.
Tentukan modul yang memiliki izin.
Nilai pengembalian
Array asosiatif dalam format $ permit => $ module.
array_keys()
Anda jelas hanya mendapatkan informasi yang diminta. Anda kemudian dapat juga menggunakan hasilnya diuser_role_grant_permissions
, misalnya untuk memberikan peran admin semua izin:user_role_grant_permissions(variable_get("user_admin_role"), array_keys(user_permission_get_modules()));
Cara termudah adalah dengan memeriksa halaman izin (D7: admin / orang / izin, D6: admin / pengguna / izin). Perhatikan bahwa Anda langsung menggunakan string yang ditampilkan di Drupal 6, untuk 7 Anda harus melihat nama / nilai kotak centang. Ini karena izin sekarang memiliki judul dan deskripsi yang diterjemahkan dalam Drupal 7.
Jadi jika Anda ingin nama untuk izin "Lihat konten yang diterbitkan" di Drupal 7, nilainya "akses konten" yang merupakan nama izin Anda.
Jika Anda tahu dari modul mana izin itu berasal, Anda juga dapat memeriksa penerapan hook_perm () (D6) / hook_pemission () (D7) yang sesuai dari modul itu.
Dalam banyak kasus, Anda ingin menentukan pemancar Anda sendiri dan menggunakannya, Anda bisa melakukannya dengan kait di atas.
sumber
Menggunakan Modul Devel
Setelah menginstal dan mengaktifkan modul Devel , navigasikan ke
admin/config/development/devel
. Ada pengaturan berjudul, "Tampilkan nama mesin izin dan modul". Pastikan itu dicentang.Sekarang di halaman izin di
people/permissions
, arahkan kursor ke nama izin yang Anda tanyakan. Mungkin menunda satu atau dua detik, tetapi kemudian nilai string akan ditampilkan.sumber
Berikut ini adalah formulir perubahan sederhana yang akan menambahkan kunci izin ke nama pada halaman izin. Itu akan membuatnya lebih mudah untuk melihatnya. Anda perlu menambahkannya ke modul khusus dan mengganti "mymodule" dengan nama modul itu.
sumber
Saya membuat cuplikan JavaScript ini yang membantu saya dalam hal ini. Saya mengujinya di Drupal 7 hanya pada tema Shiny .
Ini pada dasarnya menampilkan nama mesin, diambil dari kotak centang pertama pada nama itu, ke sel pertama, di bawah label. Skrip bergantung pada jQuery, yang seharusnya tidak menjadi masalah pada Drupal 7.
Saya biasanya menempelkannya di konsol Alat Pengembang dan menjalankannya dari sana. Saya mungkin membuat bookmarklet untuk itu di masa depan.
sumber
sumber
Ini adalah modul sederhana untuk membuatnya mudah: Access Arguments List
Salam
sumber
cukup masukkan beberapa modul, Anda akan melihat izin mesin di / admin / people / permissions
salam
sumber