Dalam modul Demo Sistem Informasi Advanced, kita bisa bebas menyajikan sesuatu berdasarkan permission user aktif (yang sedang login). Ternyata caranya sangat mudah sekali, yaitu cukup menggunakan fungsi user_access(). Fungsi juga sudah sering kita gunakan di dispatcher, dan bisa kita manfaatkan untuk keperluan apapun, contoh:
- Tombol aksi delete hanya tampil jika user memiliki permission "admin".
- User dengan permission "admin" dapat melihat semua data.
Catatan: Seluruh contoh kode di tutorial ini diambil dari source code Demo Sistem Informasi Advanced.
Sekadar menyegarkan, seluruh permission yang ada dalam suatu module ada di fungsi dengan akhiran _perm(). Jangan lupa untuk mengeset permission tiap role di menu "Access Control" di halaman Admin. Contoh dalam modul ini:
function dqs_demo2_perm() {
return array('dqs_demo2 user', 'dqs_demo2 admin');
}
Cara membuat pembatasan penyajian data adalah menggunakan fungsi user_access() untuk membedakan SQL. Contoh: seorang admin dapat melihat semua data, jika tidak maka dibatasi hanya data yang dibuat oleh user tersebut. Perhatikan bahwa di tabel dqs_demo2 terdapat field created_uid yang berisi uid user yang membuat data. Field ini diisi pada fungsi dqs_demo2_form_submit().
Contoh kode untuk menggunakan user_access():
// admin bisa melihat semua data
if (user_access('dqs_demo2 admin')) {
// SQL code for admin here...
} else {
// SQL code for non-admin here...
}
Belum terlalu rumit ya, selamat mengembangkan sistem informasi dengan fitur hak akses user yang keren
