* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ require_once(sfConfig::get('sf_plugins_dir') . '/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php'); /** * * @package symfony * @subpackage plugin * @author Fabien Potencier * @version SVN: $Id: actions.class.php 23319 2009-10-25 12:22:23Z Kris.Wallsmith $ */ class sfGuardAuthActions extends BasesfGuardAuthActions { public function executeSignin($request) { if ($this->getUser()->isAuthenticated()) { $this->getUser()->signOut(); } $user = $this->getUser(); if ($user->isAuthenticated()) { return $this->redirect('@homepage'); } $class = sfConfig::get('app_sf_guard_plugin_signin_form', 'sfGuardFormSignin'); $this->form = new $class(); if ($request->isMethod('post')) { $this->form->bind($request->getParameter('signin')); if ($this->form->isValid()) { $values = $this->form->getValues(); $this->getUser()->signin($values['user'], array_key_exists('remember', $values) ? $values['remember'] : false); if($request->getPathInfoPrefix().$request->getPathInfo() != $this->generateUrl('sf_guard_signin')) { $signinUrl = $request->getPathInfo(); } elseif($request->getReferer() != $this->generateUrl('sf_guard_signin', array(), true)) { $signinUrl = $request->getReferer(); } else { $signinUrl = $this->redirect('@homepage'); } return $this->redirect('' != $signinUrl ? $signinUrl : '@homepage'); } } else { if ($request->isXmlHttpRequest()) { $this->getResponse()->setHeaderOnly(true); $this->getResponse()->setStatusCode(401); return sfView::NONE; } // if we have been forwarded, then the referer is the current URL // if not, this is the referer of the current request $user->setReferer($this->getContext()->getActionStack()->getSize() > 1 ? $request->getUri() : $request->getReferer()); $module = sfConfig::get('sf_login_module'); if ($this->getModuleName() != $module) { return $this->redirect($module . '/' . sfConfig::get('sf_login_action')); } $this->getResponse()->setStatusCode(401); } } }