setIdentity($username)->setCredential($hash); $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($authAdapter); if (!$result->isValid()) { self::$_current = null; return false; } $userid = $authAdapter->getResultRowObject('id')->id; $userMapper = new Syj_Model_UserMapper(); $user = new Syj_Model_User(); if (!$userMapper->find($userid, $user)) { throw new Zend_Exception(); } if (!isset ($_COOKIE['syj_user']) or (!isset ($_COOKIE['syj_hashpass']))) { if ($rememberme) { // cookie will be valid for 2 weeks $time = time () + 14 * 60 * 24 * 60; } else { $time = 0; } setcookie("syj_user", $username, $time, "", "", false, true); setcookie("syj_hashpass", $hash, $time, "", "", false, true); } self::$_current = $user; return true; } static public function logout() { self::$_current = null; if (isset ($_COOKIE['syj_user'])) { setcookie ('syj_user', "", time() - 3600, "" , "",false, true); } if (isset ($_COOKIE['syj_hashpass'])) { setcookie ('syj_hashpass', "", time() - 3600, "" , "",false, true); } } static public function current() { if (self::$_current === -1) { if ((!isset ($_COOKIE['syj_user'])) || (!isset ($_COOKIE['syj_hashpass'])) || (!self::validate($_COOKIE['syj_user'], $_COOKIE['syj_hashpass']))) { self::logout(); } } return self::$_current; } public function needsLogin() { if (self::current()) { return; } $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $view = $viewRenderer->view; $request = $this->getRequest(); $encodeduri = $view->UriPath(true); $loginurl = $view->addParamToUrl($view->baseUrl() . '/' . 'login', 'redirect', $encodeduri); $translator = Zend_Registry::get('Zend_Translate'); $this->getActionController()->getHelper('Redirector')->gotoURL($loginurl, array('prependBase' => false)); } }