Obecnie jestem na etapie modyfikacji wtyczki sfGuardPlugin, aby dostosować ją do moich potrzeb. Mianowicie mam tutaj na mysli plik sfGuardBasicSecurityFilter. Utworzylem osobne tabele dla uzytkownikow do frontendu i backendu. Teraz chce aby we filtrze wylapywalo mi czy remember_key zostal wpisany wczesniej do bazy. Oczywiscie wszystko dodaje sie do bazy, tylko jest problem: nie moge nigdzie znalezc funkcji ktora odpowiada za to jaka aplikacja jest w uzyciu, aby odpowiedni remember_key wyciagal z odpowiedniej tabeli. Tak to wyglada:
class sfGuardBasicSecurityFilter extends sfBasicSecurityFilter { public function execute ($filterChain) { if ($this->isFirstCall() and !$this->getContext()->getUser()->isAuthenticated()) { if(sfApplicationConfiguration::getAppName('frontend')) //? Tutaj nie wiem jak pobierac nazwe aplikacji i czy wogole to cos da
{ if ($cookie = $this->getContext()->getRequest()->getCookie(sfConfig::get('app_sf_guard_plugin_remember_cookie_name', 'remember_me'))) { $c = new Criteria(); $c->add(sfGuardRememberKeyPeer::REMEMBER_KEY, $cookie); $rk = sfGuardRememberKeyPeer::doSelectOne($c); if ($rk && $rk->getSfGuardUser()) { $this->getContext()->getUser()->signIn($rk->getSfGuardUser()); } } } if(sfApplicationConfiguration::getAppName('backend')) { if ($cookie = $this->getContext()->getRequest()->getCookie('admin_remember')) { $c = new Criteria(); $c->add(sfGuardTeamRememberKeyPeer::REMEMBER_KEY, $cookie); $rk = sfGuardTeamRememberKeyPeer::doSelectOne($c); if ($rk && $rk->getSfGuardTeam()) { $this->getContext()->getUser()->signIn($rk->getSfGuardTeam()); } } } } { if(!$this->getContext()->getUser()->getGuardUser()->getIsActive()) { $this->getContext()->getUser()->setFlash('error', 'Twoje konto zostało zablokowane. Skontaktuj się za pomocą formularza kontaktowego, aby odblokować swoje konto.'); $this->getContext()->getUser()->signOut(); } } parent::execute($filterChain); } }