Używam Symfony2 i mam już użytkowników i role już zapisane w moim DB. Jeżeli ustawić coś jak poniżej w security.yml
działa świetnie:Jak przechowywać informacje Symfony2 "access_control" w bazie danych?
access_control:
- { path: ^/admin, role: ROLE_ADMIN}
- { path: ^/users, role: ROLE_MANAGER}
Ale chciałbym przechowywać informacje access_control w bazie danych, dzięki czemu użytkownik z mojego systemu może sama zmienić uprawnienia za pomocą interfejsu administracyjnego.
Spojrzałem na ACL i FOSUserBundle, ale nie mogłem znaleźć rozwiązania. Zauważyłem, że mogę sprawdzić uprawnienia z czymś takim jak if ($user->hasRole($role))
, ale musiałbym to zrobić w każdym kontrolerze.
Czy istnieje sposób zdefiniowania dynamicznej funkcji "access_control"? Może coś takiego jak przekierowanie access_control do jakiejś klasy, która może zwrócić true lub false. Jakieś rozwiązanie?
Dzięki, działało idealnie! –
Nie dostałem tego. Gdzie muszę umieścić rolę DB_ROLE_CHECK w hierarchii ról i jak sprawdzić trasę w Wyborcy? Na przykład mam pozycje DB, takie jak [route, role]. I w regule access_control^/: DB_ROLE_CHECK, prawda? Wykona więc DBVoter na każde żądanie. W atrybucie $ będę miał rolę, a następnie token $. I będę miał trasę lub ścieżkę jako $ subject param? Więc potrzebuję uzyskać rekord DB według ścieżki i użyć jego roli z $ user z tokena $ w menadżerze decyzyjnym, prawda? –