Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony]ACL i Symfony2
Forum PHP.pl > Forum > PHP > Frameworki
slummer87
Hej, mam problem z ACL w Symfony2.
Robie sprawdzenie wszystkich dostepnych ACL w petli w taki sposob:

  1. $securityContext = $this->get('security.context');
  2.  
  3.  
  4. if (!empty($objects)) {
  5. foreach ($objects as $obj) {
  6.  
  7. if (true === $securityContext->isGranted('VIEW', $obj)) {
  8. $obj->setViewAccess(true);
  9. }
  10.  
  11. if (true === $securityContext->isGranted('EDIT', $obj)) {
  12. $obj->setEditAccess(true);
  13. }
  14.  
  15. if (true === $securityContext->isGranted('DELETE', $obj)) {
  16. $obj->setDeleteAccess(true);
  17. }
  18. }
  19. }


Problem lezy w tym, ze jest wywolana linijka:

$securityContext = $this->get('security.context');
ktora pobiera mi obiekt securityContext dla aktualnie zalogowanego uzytkownika. Ja natomiast chcialby pobrac ten obiekt dla innego uzytkownika niz zalogowany, czy jest to mozliwe? Jezeli ktos moglby mi pomoc to bede ogromnie wdzieczny!

Pozdrawiam.
phpion
Wprawdzie nie znam Symfony2 na tyle by być pewnym, ale wydaje mi się, że jest do tego odpowiednia metoda setToken():
http://api.symfony.com/2.0/Symfony/Compone...ityContext.html
Jako jej argument musisz przekazać obiekt implementujący interfejs TokenInterface:
http://api.symfony.com/2.0/Symfony/Compone...nInterface.html
slummer87
Wielkie dzieki za pomoc, twoje wskazówki były bardzo pomocne, udało mi się rozwiązać problem pobierania ACL dla poszczególnych użytkowników.
Gdyby ktoś kiedyś miał podobny problem, załączam rozwiązanie które u mnie się sprawdza:

$user = $this->getDoctrine()->getRepository('SomeBundle:User')->find($id);
$securityContext = $this->get('security.context');

$securityContext->setToken(
new UsernamePasswordToken(
$user, null, 'main', $user->getRoles()
)
);

Pozdrawiam!
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.