Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Symfony2] ACL - jak tego używać?
kabanek
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 2
Dołączył: 25.06.2009
Skąd: Nowy Sącz

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


Witam,

piszę projekt w Symfony2 i chciałem użyć ACL, gdyż jest to dlaczego by nie skorzystać ?
Włączyłem acl, napisałem przy dodawaniu taki otoż kod:

  1. if ($form->isValid()) {
  2. $securityContext = $this->get('security.context');
  3. $user = $securityContext->getToken()->getUser(); // get current user
  4.  
  5. $project->setAuthor($user);
  6.  
  7. $entityManager = $this->get('doctrine.orm.default_entity_manager');
  8. $entityManager->persist($project);
  9. $entityManager->flush();
  10.  
  11. // creating the ACL
  12. $aclProvider = $this->get('security.acl.provider');
  13. $objectIdentity = ObjectIdentity::fromDomainObject($project);
  14. $acl = $aclProvider->createAcl($objectIdentity);
  15.  
  16. // retrieving the security identity of the currently logged-in user
  17. $securityIdentity = UserSecurityIdentity::fromAccount($user);
  18.  
  19. // grant owner access
  20. $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
  21. $aclProvider->updateAcl($acl);
  22.  
  23. $this->get('session')->setFlash('info', $this->tr('Project created'));
  24.  
  25. return $this->redirect($this->generateUrl('projects_list'));
  26. }


i teraz mam pytanie, jak sprawdzić, czy zalogowany użytkownik ma do niego prawa?
Przypuśćmy taką sytuację: mam dwa obiekty klas $user oraz $project. Jak sprawdzić, czy wybrany użytkownik ma prawa do tego obiektu?
To jest raz, dwa: chcę stworzyć grupę użytkowników, którzy mają prawo np dodawać projekty oraz edytować ale tylko te, które sami stworzyli. Można to zrobić za pomocą acl?

Ogólnie chcę zrobić tak: jest użytkownik, który należy do jakiejś grupy. Na początku ten user wraz ze wszystkimi w grupie ma prawo do edycji/usuwania projektów. Następnie pozwala innej grupie np grupie X na to, aby mogli przeglądać zawartość projektu, ale bez edycji. Natomiast grupie Y daję uprawnienia podglądu oraz na przykład dodawania komentarzy.

Można to jakoś ładnie zrobić w acl czy muszę to zrobić za pomocą jakiś dodatkowych obiektów typu grupa?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Ad. 1. Nie wiek co jest w zmiennej $acl. Generalnie nie musisz tworzyć ACL przy rejestracji. Twój kawałek kodu działa mniej więcej tak, że chcesz sterować dostępem do encji użytkownika.

Ad. 3. Tutaj moim zdaniem powinno być findAcl.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 05:53