ugrás a tartalomhoz

Symfony2 - ACL kiegészítés

DarkHcK · 2015. Jún. 22. (H), 10.18
Sziasztok!

Olyan problémába futottam, bele amire nem találok megoldást. Symfony2 ACL listát szeretném kiegészíteni új ACE objektumokkal, viszont mikor az AclProvider -től lekérem a listát, akkor nincs benne az insertObjectAce metódus, amivel hozzá tudnék adni új bejegyzést.

Ha törlöm és újból létrehozom a domain objektumhoz a listát, akkor elérhető.
Van valami megoldás arra, hogy ne kelljen törölni, hanem simán hozzá tudjak adni?

Jelenleg így néz ki:
  1. $aclProvider        = $this->getAclProvider();  
  2. $objectIdentity     = ObjectIdentity::fromDomainObject($domainObject);  
  3. $acl                = $aclProvider->findAcl($objectIdentity);  
  4. $objectAces         = $acl->getObjectAces();  
  5.   
  6. // Itt még nem érhető el az insertObjectAce metódus az $acl -ből  
  7.   
  8.   
  9. $aclProvider->deleteAcl($objectIdentity);  
  10. $acl = $aclProvider->createAcl($objectIdentity);  
  11.   
  12. // Itt viszont már elérhető az insertObjectAce metódus  
  13.   
  14. // Visszatöltjük az eredeti acl -t  
  15. foreach($objectAces as $objectAce)  
  16. {  
  17.     /* @var $objectAce \Symfony\Component\Security\Acl\Domain\Entry */  
  18.     $mask = $objectAce->getMask();  
  19.     $securityIdentity = $objectAce->getSecurityIdentity();  
  20.     $acl->insertObjectAce($securityIdentity$mask);  
  21. }  
  22.   
  23. // További ObjectAce hozzáadása  
 
1

Nincs benne, vagy csak IDE nem írja ki?

Práger Ádám · 2015. Jún. 22. (H), 11.40
Nincs benne, vagy csak IDE nem írja ki? findAcl AclInterfacet ad vissza, amiben nincs benne, viszont a default implementáció sfben az Auditable interfacet implementálja, amiben már ottvan (Mutable által).
2

Valóban

DarkHcK · 2015. Jún. 22. (H), 14.15
Valóban megette annak ellenére, hogy findAcl -el kapott "listára" hívtam meg az insertObjectAce -t. Köszönöm :)
3

Nincs mit :) Azért egy

Práger Ádám · 2015. Jún. 22. (H), 18.57
Nincs mit :) Azért egy checket rakj bele, hátha változik az implementáció... meg a következő fejlesztő ne káromkodjon nagyokat :D

if (!$acl instanceof MutableAclInterface) {
throw new \Exception('Not implemented');
}
4

Validáció

DarkHcK · 2015. Jún. 23. (K), 08.25
Köszi szépen. A biztonság kedvéért beleraktam.