* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ require_once(dirname(__FILE__).'/../lib/BasesfGuardAuthActions.class.php'); /** * * @package symfony * @subpackage plugin * @author Fabien Potencier * @version SVN: $Id: actions.class.php 3409 2008-12-16 13:01:21Z bartek $ */ class sfGuardAuthActions extends BasesfGuardAuthActions { public function executeSignin() { $stWebRequest = new stWebRequest(); $httpUserAgent = $stWebRequest->getHttpUserAgent(); if(strpos($httpUserAgent, "MSIE 7.0") !== false || strpos($httpUserAgent, "MSIE 6.0") !== false) { $this->redirect('stIe/index'); } $c = new Criteria(); $c->add(sfGuardUserPeer::IS_ACTIVE, 1); $c->add(sfGuardUserPeer::IS_SUPER_ADMIN , 1); $user = sfGuardUserPeer::doSelectOne($c); if(!$user) { $this->redirect('stRegister/index'); } $user = $this->getUser(); if ($this->getRequest()->getMethod() == sfRequest::POST) { $referer = $user->getAttribute('referer', $this->getRequest()->getReferer()); $user->getAttributeHolder()->remove('referer'); $signin_url = sfConfig::get('app_sf_guard_plugin_success_signin_url', $referer); $this->redirect('' != $signin_url ? $signin_url : '@homepage'); } elseif ($user->isAuthenticated()) { $this->redirect('@homepage'); } else { $is_iframe = strpos($this->getRequest()->getUri(), 'gadget_id=') !== false; if ($is_iframe) { return $this->renderText(""); } if ($this->getRequest()->isXmlHttpRequest()) { $this->getResponse()->setStatusCode(401); return sfView::HEADER_ONLY; } if (!$user->hasAttribute('referer')) { $user->setAttribute('referer', $this->getRequest()->getUri()); } if ($this->getModuleName() != ($module = sfConfig::get('sf_login_module'))) { return $this->redirect($module.'/'.sfConfig::get('sf_login_action')); } } } public function executeSecure() { $layout = $this->getRequestParameter('layout'); if ($layout) { $this->setLayout($layout); } parent::executeSecure(); } }