Saya memiliki beberapa izin yang ingin saya tetapkan untuk beberapa peran secara terprogram agar instalasi lebih mudah.
Karena saya menginstal modul dan membuat izin dan peran, saya tidak memiliki id peran, di mana saya ingin mengatur izin. Sejauh ini saya hanya menemukan cara untuk menetapkan peran secara terprogram yang membutuhkan ID peran.
Saya ingin tahu apakah saya bisa mencari peran dengan nama mereka (string), mengambil ID peran dan kemudian memberikan izin. Rasanya tidak benar.
Jawaban:
Modul fitur melakukan ini dengan cukup baik, memungkinkan Anda untuk mengekspor peran dan izin (dan banyak hal lainnya) dalam satu gerakan:
http://drupal.org/project/features
Tetapi jika Anda ingin meluncurkan sendiri API Izin Anda:
http://drupal.org/project/permissions_api
sumber
Fiturnya cukup berguna untuk hal-hal seperti ini. Namun, jika Anda memang perlu membuat peran dan menambahkan izin secara program, Anda tidak perlu menggali sendiri melalui database.
Saat Anda membuat peran pengguna baru
user_role_save()
, itu akan memperbarui objek yang Anda berikan dengan id peran pengguna baru yang ditugaskan. Anda dapat melihat contohnya dalamstandard_install()
fungsi ini di profil pemasangan Standar.Contoh ini menunjukkan bahwa Anda dapat membuat peran pengguna baru, lalu mengakses
rid
propertinya, yang diisi olehuser_role_save()
. Ini juga menunjukkan bagaimana cara menambahkan izin ke peran ituuser_role_grant_permissions()
. Dalam hal ini, ini memberikan peran 'administrator' semua izin yang tersedia.Jika Anda perlu mendapatkan id dari peran pengguna yang dibuat oleh orang lain, Anda bisa menggunakan
user_role_load_by_name()
untuk mendapatkan objek untuk peran pengguna itu. Maka Anda hanya mengambil id dengan$role->rid
.sumber
user_role_grant_permissions()
Saya ingin menambahkan contoh kode yang lebih dekat ke pertanyaan awal tentang cara menetapkan izin ke peran yang ada secara terprogram.
Anda dapat mencari peran dengan namanya, mengambil ID peran dan kemudian menetapkan izin sebagai berikut (misalnya dalam implementasi hook_update):
sumber