Posts Tagged ‘zen_acl’
Zend_Acl Part II
Membuat ACL
ACL dapat mewakili benda fisik atau object virtual yang diinginkan. Untuk membuat object ACL baru harus diinstansiasi ACL tanpa parameter.
$acl = new Zend_Acl();
Mendaftarkan Role
Aplikasi akan selalu memerlukan hirarki hak akses terhadap penggunanya. Mungkin akan ada kelompok “guest” yang mempunyai hak akses yang terbatas sekedar untuk demonstrasi.Kelompok “staff” sebagai kelompok mayoritas pengguna aplikasi sebagai operator aplikasi, “editor” yang bertanggungjawab dalam proses penerbitan, mengulas, dan mengarsipkan content, dan terakhir seorang “administrator” yang tugasnya mencakup tugas kelompok-kelompok lain serta pemeliharaan informasi, pengaturan user, data konfigurasi, back-up dan export.
Setting hak akses dapat direpresentasikan dalam registry role,memungkinkan setiap grup untuk mewarisi priviledge dari grup parentnya, serta memberikan hak istimewa yang berbeda untuk grup yg unique.Hak akses dapat dinyatakan sebagai berikut :
| Nama | Hak Akses Unik | Mewarisi Hak Akses Dari |
| Guest | View | N/A |
| Staff | Edit, Simpan, Update | Guest |
| Editor | Publish, Archieve, Delete | Staff |
| Administrator | Mendapat Semua Hak Akses | N/A |
Untuk contoh ini. Zend_Acl_Role digunakan, tetapi setiap object yang menggunakan Zend_Acl_Role_Interface dapat diterima. Grup-grup ini dapat ditambahkan ke registry sebagai berikut :
$acl = new Zend_Acl(); // Add groups to the Role registry using Zend_Acl_Role // Guest does not inherit access controls $roleGuest = new Zend_Acl_Role('guest'); $acl->addRole($roleGuest); // Staff inherits from guest $acl->addRole(new Zend_Acl_Role('staff'), $roleGuest); /* Alternatively, the above could be written: $acl->addRole(new Zend_Acl_Role('staff'), 'guest'); */ // Editor inherits from staff $acl->addRole(new Zend_Acl_Role('editor'), 'staff'); // Administrator does not inherit access controls $acl->addRole(new Zend_Acl_Role('administrator'));
Mendefinisikan Hak Akses
Cara untuk mendefinisikan hak akses bisa dengan cara berikut :
$acl = new Zend_Acl(); $roleGuest = new Zend_Acl_Role('guest'); $acl->addRole($roleGuest); $acl->addRole(new Zend_Acl_Role('staff'), $roleGuest); $acl->addRole(new Zend_Acl_Role('editor'), 'staff'); $acl->addRole(new Zend_Acl_Role('administrator')); // Guest may only view content $acl->allow($roleGuest, null, 'view'); /* Alternatively, the above could be written: $acl->allow('guest', null, 'view'); //*/ // Staff inherits view privilege from guest, but also needs additional // privileges $acl->allow('staff', null, array('edit', 'submit', 'revise')); // Editor inherits view, edit, submit, and revise privileges from // staff, but also needs additional privileges $acl->allow('editor', null, array('publish', 'archive', 'delete')); // Administrator inherits nothing, but is allowed all privileges $acl->allow('administrator');
Nilai NULL sebelum allow() adalah parameter yang digunakan untuk menunjukkan bahwa aturan memungkinkan untuk semua sumber daya.
Meng-Query-kan ACL
Untuk mengetahui bahwa user mempunyai hak akses atau tidak, cukup sederhana dengan menggunakan metode isAllowed()
echo $acl->isAllowed('guest', null, 'view') ? "allowed" : "denied"; // allowed echo $acl->isAllowed('staff', null, 'publish') ? "allowed" : "denied"; // denied echo $acl->isAllowed('staff', null, 'revise') ? "allowed" : "denied"; // allowed echo $acl->isAllowed('editor', null, 'view') ? "allowed" : "denied"; // allowed because of inheritance from guest echo $acl->isAllowed('editor', null, 'update') ? "allowed" : "denied"; // denied because no allow rule for 'update' echo $acl->isAllowed('administrator', null, 'view') ? "allowed" : "denied"; // allowed because administrator is allowed all privileges echo $acl->isAllowed('administrator') ? "allowed" : "denied"; // allowed because administrator is allowed all privileges echo $acl->isAllowed('administrator', null, 'update') ? "allowed" : "denied"; // allowed because administrator is allowed all privileges
source : http://framework.zend.com/manual/en/zend.acl.html#zend.acl.introduction.creating
