Jestem nieco zirytowany tym, jak listy kontroli dostępu są zaimplementowane w Symfony2.Jak zaimplementować rolę/zasoby ACL w Symfony2
W Zend Framework (wersje 1 & 2), wykaz zasobów a lista ról są zdefiniowane i każda rola jest przypisywana podzbiór zasobów jest on dozwolony dostęp. Zasoby i role są zatem głównym słownictwem implementacji ACL, co nie ma miejsca w Symfony2, w której rządzą tylko role.
W starszej bazie danych aplikacji mam tabele definiujące listę ról, listę zasobów i listę dozwolonych zasobów dla każdej roli (relacja wiele-do-wielu). Każdy użytkownik ma przypisaną rolę (administrator, superadministrator, redaktor itd.).
Potrzebuję skorzystać z tej bazy danych w aplikacji Symfony2. Moje zasoby wyglądać następująco: ARTICLE_EDIT, ARTICLE_WRITE, COMMENT_EDIT itd
Moja User
podmiot w Symfony implementuje interfejs Symfony\Component\Security\Core\User\UserInterface
i dlatego ma metodę getRoles)
.
Zamierzam użyć tej metody do zdefiniowania dozwolonych zasobów, co oznacza, że używam ról jako zasobów (mam na myśli to, że to, co nazywamy zasobami w Zend Framework, nazywa się tu rolami).
Czy potwierdzasz, że powinienem użyć tej metody?
Oznacza to, że nie obchodzi mnie już rola (administrator, redaktor, ...) każdego użytkownika, ale tylko jego zasoby.
Chciałbym wtedy użyć $this->get('security.context')->isGranted('ROLE_ARTICLE_WRITE')
w moich kontrolerach.
Czy jest to właściwy sposób na zrobienie tego i czy nie byłoby to obejście ról w Symfony?