Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony]ACL i Symfony2, mam problem z ACL/ACE w symfony2
slummer87
post 23.06.2012, 18:27:43
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 25.05.2012

Ostrzeżenie: (0%)
-----


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.
Powód edycji: [phpion]: Dodałem bbcode - na przyszłość proszę o tym pamiętać.
Go to the top of the page
+Quote Post
phpion
post 23.06.2012, 20:26:23
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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
Go to the top of the page
+Quote Post
slummer87
post 24.06.2012, 15:03:59
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 25.05.2012

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 17:19