Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Zend_Acl i rekordy z bazy
Forum PHP.pl > Forum > PHP > Frameworki
agmakonts
Hej:)

Mam mały problem z zrozumieniem Acl w bardziej zaawansowanym przypadku. Zawsze wystarczało mi ręczne wpisywanie zasobów i sprawdzanie wszystkiego pluginem w preDispatch.
Teraz jednak muszę podpiąć je pod bazę danych i sprawdzać czy user jest właścicielem danego dokumentu. Myślę że będzie trzeba wykorzystać Zend_Acl_Assert_Interface ale nie wiem nawet za bardzo gdzie to włożyć.

IceManSpy
Może coś takiego da Ci jakieś wskazówki:
http://framework.zend.com/wiki/display/ZFU...atabase+backend

Zawsze można napisać własny model, który będzie to sprawdzał.
zend
Bajecznie proste do zrobienia przy użyciu zend'a

  1.  
  2. class Application_Model_DbTable_User_Row extends Zend_Db_Table_Row_Abstract
  3. implements Zend_Acl_Resource_Interface
  4. {
  5.  
  6. public function getResourceId()
  7. {
  8. return 'user';
  9. }
  10. }
  11.  
  12. //bootstrap
  13.  
  14. $userRow = new Zend_Acl_Resource('user');
  15.  
  16. $acl -> addResource($userRow);
  17. $acl -> allow('guest', $userRow, array('view', 'galleries'), $privacy );
  18. $acl -> allow('user', $userRow, array('view', 'galleries', 'edit'), $privacy );
  19.  
  20.  
  21. class Application_Model_Privacy implements Zend_Acl_Assert_Interface
  22. {
  23.  
  24. public function assert(Zend_Acl $acl,
  25. Zend_Acl_Role_Interface $role = null,
  26. Zend_Acl_Resource_Interface $resource = null,
  27. $privilege = null)
  28. {
  29. if(!$resource instanceof Zend_Db_Table_Row_Abstract)
  30. {
  31. return false;
  32. }
  33.  
  34. //twoj kod
  35.  
  36. }
  37. }
  38.  
  39. $role = Zend_Auth::getInstance() -> hasIdentity() ? Zend_Auth::getInstance() -> getIdentity() : 'guest';
  40. $acl -> isAllowed( $role , $table -> find(1) -> current() , 'edit' );
  41.  
  42.  
agmakonts
Dzięki wielkie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.