Bir Kaynak için Veli değiştirme - Zend ACL - 1.7.3

1 Cevap php

Biz uygulama için, aşağıdaki yapıya sahiptir

require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
$acl = new Zend_Acl();

// application
$acl->add(new Zend_Acl_Resource('application1'));
// groups
$acl->add(new Zend_Acl_Resource('group1'), 'application1');
$acl->add(new Zend_Acl_Resource('group2'), 'application1');
// fields
$acl->add(new Zend_Acl_Resource('field1'), 'group1');
$acl->add(new Zend_Acl_Resource('field2'), 'group1');
$acl->add(new Zend_Acl_Resource('field3'), 'group2');
$acl->add(new Zend_Acl_Resource('field4'), 'application1');

// roles
$acl->addRole(new Zend_Acl_Role('applicant'));
$acl->addRole(new Zend_Acl_Role('admin'), 'applicant');

// permissions
$acl->allow('applicant', 'application1', 'view');
$acl->allow('applicant', 'group1', 'edit');

Bu üniversite uygulamaları ve grupların bir veritabanı temsil / alanlar bir üniversite uygulamasının bileşenleri vardır. Başvuru yukarıdan Field2 düzenlemek için düzenleme izniniz yok.

Tüm yapı bir mysql veritabanında bir acl nesne olarak saklanır.

Bazen yöneticileri group2 için group1 gelen Field2 taşımak için karar verdikten sonra, nasıl bir acl nesneyi değiştirme hakkında gitmek istiyorsunuz?

i Dosyayı Acl.php kontrol ama bir kaynağın üst değiştirmek ve böylece otomatik olarak kurallar / izinlerini güncelleştirmek buradaki hiçbir yöntem vardır.

Teşekkürler.

Shashikant

1 Cevap

Şahsen, ben veritabanında tefrika ACL nesnesini saklamak için tercih ediyorum. Ben yerine doğrudan veritabanı tabloları rolleri, kaynaklar ve izinleri bilgi depolamak ve uygulamayı önyükleyebilir zaman anında yeni bir ACL nesne oluşturmak istiyorum.

Eğer gerçekten veritabanına ACL nesne seri hale getirmek istiyorsanız, bir ACL bunları yeniden eklemeniz söz konusu kaynakların kaldırmak için, bu işe yarayabilir. Ben bir PHP yorumlayıcısı bu beslenen değil de kod, bu gibi bir şey olacaktır:

$acl->remove('field2');
$acl->add(new Zend_Acl_Resource('field2'), 'group2');