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(); } $request = Zend_Controller_Front::getInstance()->getRequest(); if (!$request->getCookie('syj_user') or !$request->getCookie('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; $request = Zend_Controller_Front::getInstance()->getRequest(); if ($request->getCookie('syj_user')) { setcookie ('syj_user', "", time() - 3600, "" , "",false, true); } if ($request->getCookie('syj_hashpass')) { setcookie ('syj_hashpass', "", time() - 3600, "" , "",false, true); } } static public function current() { if (self::$_current === -1) { $request = Zend_Controller_Front::getInstance()->getRequest(); if (!self::validate($request->getCookie('syj_user'), $request->getCookie('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)); } }