napisalem sobie filtr, ktory przed wykonaniem kazdej akcji ma pobierac z bazy danych uwierzytelnienia i nadawac je uzytkownikowi, wyglada mniej wiecej tak:
class sprawdzPrzywileje extends sfFilter { public function execute($filterChain) { if($this->getContext()->getUser()->isAuthenticated()) { $this->getContext()->getUser()->clearCredentials(); // operacje zwiazane z baza danych ... foreach ($aWynik as $przywilej) { $this->getContext()->getUser()->addCredentials($przywilej[1]); } } $filterChain->execute(); } }
i w pliku filters.yml dodalem go tak (probowalem rowniez wrzucic przed security):
rendering: ~ web_debug: ~ security: class: sfBasicSecurityFilter param: type: security # generally, you will want to insert your own filters here przywileje: class: sprawdzPrzywileje cache: ~ common: ~ flash: ~ execution: ~
problem w tym, ze jesli zabezpiecze jakas akcje (np. w module moniotr, akcja pokaz):
pokaz: is_secure: on credentials: monitorPokaz
to mimo to, ze w takie prawo zostalo dodane userowi:
symfony/user/sfUser/authenticated: 1 symfony/user/sfUser/credentials: - monitorPokaz - archiwumPokaz - archiwumTabela - archiwumWykres - punktyPokaz - punktyDodaj - punktyUsun
sprawdzone rowniez
// Array ( [0] => monitorPokaz [1] => archiwumPokaz [2] => archiwumTabela [3] => archiwumWykres [4] => punktyPokaz [5] => punktyDodaj [6] => punktyUsun )
przy probie dostepu do tej akcji otrzymuje strone z komunikatem
"Credentials Required
This page is in a restricted area."
Przypuszczam ze mam cos pokopane z lancuchem filtrow. Gdzie powinienem umiejscowic swoja funkcje sprawdzPrzywileje?