From 530fab40eec65c78b0d8cd0becdb5df205db495a Mon Sep 17 00:00:00 2001 From: Tim Steiner <tsteiner2@unl.edu> Date: Mon, 22 Jun 2009 22:20:10 +0000 Subject: [PATCH] After a user logs in, redirect them to their previous location. --- .../auth/controllers/IndexController.php | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/application/modules/auth/controllers/IndexController.php b/application/modules/auth/controllers/IndexController.php index 6e435bfd..4291c41a 100644 --- a/application/modules/auth/controllers/IndexController.php +++ b/application/modules/auth/controllers/IndexController.php @@ -18,12 +18,25 @@ class Auth_IndexController extends App_Controller_Action { public function loginAction() { + $session = new Zend_Session_Namespace(__CLASS__); + $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); + $referer = Zend_Uri_Http::factory($_SERVER['HTTP_REFERER']); + if ($referer->getHost() == $_SERVER['HTTP_HOST'] && + (!$referer->getPort() || $referer->getPort() == $_SERVER['SERVER_PORT']) && + substr($referer->getPath(), 0, strlen($baseUrl)) == $baseUrl) { + $session->referer = substr($referer->getPath(), strlen($baseUrl)); + if ($referer->getQuery()) { + $session->referer .= '?' . $referer->getQuery(); + } + if ($referer->getFragment()) { + $session->referer .= '#' . $referer->getFragment(); + } + } else { + $session->referer = '/'; + } + $this->_redirect('/auth/index/validate'); return; - - $session = new Zend_Session_Namespace(__CLASS__); - $this->view->errorMessage = $session->errorMessage; - unset($session->errorMessage); } public function logoutAction() @@ -72,7 +85,12 @@ class Auth_IndexController extends App_Controller_Action { $user = Auth_UserModel::fetchNewFromLdap($auth->getIdentity()); } - $this->_redirect('/'); + $session = new Zend_Session_Namespace(__CLASS__); + if ($session->referer) { + $this->_redirect($session->referer); + } else { + $this->_redirect('/'); + } } } -- GitLab