Mengenal Permission di Drupal

druid's picture

Kita akan sempurnakan module sebelumnya untuk dilengkapi dengan permission. Untuk simpelnya, semua source code sudah ada di attachment. Sebaiknya module yang lama dinonaktifkan saja.

Dalam module ini kita masih akan menampilkan teks, tapi dengan sedikit perbedaan berikut:

  • Ada sebuah menu yang dapat di-klik oleh publik (role anonymous user). Tampilan akan tertulis "Public Access".
  • Ada sebuah menu yang hanya dapat di-klik oleh member (role authenticated user). Tampilan akan tertulis "Member Area".

1. Setup Module

Tidak ada perbedaan dengan sebelumnya selain nama module kali ini adalah "dqs_halo2". Pastikan semua prefix nama fungsi sudah menjadi "dqs_halo2".

Nama module sengaja saya ganti agar rekan sekalian dapat mencermati perbedaan kodenya (karena module yang lama tidak perlu dihapus).

2. Definisikan Permission

Ini adalah salah satu kecanggihan Drupal yang saya sangat sukai. Permission adalah kunci untuk mewujudkan pembatasan akses user. Disini kita bisa membuat pembatasan akses atas setiap fungsionalitas module.

Untuk keperluan tutorial ini, kita cukup mendefinisikan dua macam permission, yaitu: "dqs user" dan "dqs admin". Permission didefinisikan dengan mudah di baris kode berikut:

function dqs_halo2_perm() {
return array('dqs user', 'dqs admin');
} 

Cermati subbab berikut untuk melihat bagaimana efek permission terhadap setiap menu/dispatcher.

3. Definisikan Dispatcher

Setiap fungsionalitas module (view, edit, print, dsb) memiliki identitas yang disebut "path". Path ini merupakan satu kesatuan dengan URL, yaitu sesudah parameter "?q=".

Dalam tutorial ini, kita akan buat path berikut:

http://localhost/dqs/?q=dqs_halo
http://localhost/dqs/?q=dqs_halo/admin

Perhatikan bahwa walaupun nama module ini adalah "dqs_halo2", tapi saya tetap mempertahankan nama path. Pada prinsipnya, Anda bebas memberi nama modul dan path.

Sebuah menu hanya akan ditampilkan jika user memiliki hak akses yang sesuai.
Jika user tidak memiliki hak akses, Drupal akan otomatis menampilkan
"Access Denied". Dalam kode berikut, path "dqs_halo" hanya boleh diakses oleh user dengan permission "dqs user".

$items[] = array(
'path' => 'dqs_halo',
'title' => 'DQS Default',
'callback' => 'dqs_halo2_default',
'access' => user_access('dqs user'),
'type' => MENU_NORMAL_ITEM
);

Agar sebuah menu hanya dapat di-klik oleh authenticated user, maka path "dqs_halo/admin" hanya dapat diakses oleh user dengan permission "dqs admin".

$items[] = array(
'path' => 'dqs_halo/admin',
'title' => 'DQS Admin',
'callback' => 'dqs_halo2_admin',
'access' => user_access('dqs admin'),
'type' => MENU_NORMAL_ITEM
);

4. Coding!

Sementara ini tidak ada perubahan substansial selain kita tambahkan fungsi handler untuk menampilkan halaman Member Area.

function dqs_halo2_admin() {
$output .= theme_box('Member Area', 'Any text goes here...');
return $output;
}

5. Set Permission

Sesudah handler selesai di-coding, pastikan bahwa permission module sudah di-set. Ini sangat penting karena bagian ini sering terlupakan, kita merasa logic coding sudah benar padahal kita login sebagai Administrator sehingga semua fungsi menghasilkan output yang benar.

Set permission dilakukan melalui menu "Set Permission" di "Administer by Module".

Dalam tutorial ini, pastikan:

  • permission "dqs user" diset ke "anonymous user"
  • permission "dqs admin" diset ke "authenticated user"

Sangat penting untuk melakukan pengujian intensif pada tahap ini. Coba Anda logout kemudian akses langsung ke path "dqs_halo/admin". Jika tidak tampil "Access Denied", pasti Anda lupa set permission.

Selamat mencoba ya!


Comments

Bro..., pada tutor dqs_halo

Bro..., pada tutor dqs_halo (yang pertama) module nya error tuh pada drupal 6.9, pesannya kalo dimodule :

"This version is incompatible with the 6.9 version of Drupal core." saya sudah edit (menyamakan isi file dqs_helo.info) dengan beberapa file yang sudah ada dimodule tetap saja error.

Sedangkan kalo dipanggil via browser juga error "Page not Found". Semoga bisa dikasih pencerahan.

DQS Goes to Drupal 6

bro ndoel, sekarang DQS sudah support Drupal 6. Details ada di:

http://www.drupalquickstart.com/node/28

hm... semua tutorial disini

hm... semua tutorial disini memang masih berbasis D5. memang akn ada beberapa perbedaan jika akn dipasang di D6. saya sendiri belum memakai D6 karena modul2nya masih belum sebanyak D5.

jika nanti saya sudah belajar D6, pastinya akan saya posting disini. atau mungkin bro ndoel ingin sharing disini juga boleh Smiling

nanya..

permission dah d set, d user ga ada menu nya..

sedangkan d admin ada 2 link: DQS default, dan sub menu  DQS admin.

mohon pencerahan.. thx


Tutorial Module Drupal 6

Memenuhi harapan dari member, sekarang seluruh tutorial DQS sudah kompatibel dengan Drupal 6. Klik disini untuk detailnya.

Promo Hosting Ekstra!

Reseller Hosting Indonesia sedang ada promo Ekstra Disk Space (tambahan 1GB-3GB) dan Ekstra Sewa Hosting (tambahan 1-3 bulan sewa gratis). Jangan lewatkan kesempatan ini, diskon 20% bagi member DQS juga tetap berlaku.

Rekan yang berminat gunakan form Kontak Kami, pilih kategori Hosting.

Live Buddies

There are currently 0 users and 4 guests online.

DQS Members

  • Registered Users: 315

Partners

GrowUrl.com - growing your website