X-Git-Url: https://dev.renevier.net/?a=blobdiff_plain;f=application%2Fcontrollers%2Fhelpers%2FSyjUserManager.php;h=34c5e66407fcf6960e376e8097126b99f5ed5c57;hb=c62fec904635ab47cff34f23db822e7ff017dd4e;hp=427e6faa07434d3e9f215e3f3b6adad67edb6c17;hpb=0722c496ca63f30937427e3bf8fbdd5cfee2c83d;p=syj.git diff --git a/application/controllers/helpers/SyjUserManager.php b/application/controllers/helpers/SyjUserManager.php index 427e6fa..34c5e66 100644 --- a/application/controllers/helpers/SyjUserManager.php +++ b/application/controllers/helpers/SyjUserManager.php @@ -7,7 +7,10 @@ class Syj_Controller_Action_Helper_SyjUserManager extends Zend_Controller_Action // -1 for undeterminated, null for non logged, Syj_Model_User for a logged user protected static $_current = -1; - static public function validate($username, $hash) { + static public function validate($username, $hash, $rememberme = false) { + if (!$username) { + return false; + } // TODO: try to make only one sql request $adapter = Zend_Db_Table_Abstract::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($adapter, 'users', 'pseudo', 'password'); @@ -25,9 +28,16 @@ class Syj_Controller_Action_Helper_SyjUserManager extends Zend_Controller_Action throw new Zend_Exception(); } - if (!isset ($_COOKIE['syj_user']) or (!isset ($_COOKIE['syj_hashpass']))) { - setcookie("syj_user", $username, 0, "", "", false, true); - setcookie("syj_hashpass", $hash, 0, "", "", false, true); + $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; @@ -35,18 +45,19 @@ class Syj_Controller_Action_Helper_SyjUserManager extends Zend_Controller_Action static public function logout() { self::$_current = null; - if (isset ($_COOKIE['syj_user'])) { + $request = Zend_Controller_Front::getInstance()->getRequest(); + if ($request->getCookie('syj_user')) { setcookie ('syj_user', "", time() - 3600, "" , "",false, true); } - if (isset ($_COOKIE['syj_hashpass'])) { + if ($request->getCookie('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']))) { + $request = Zend_Controller_Front::getInstance()->getRequest(); + if (!self::validate($request->getCookie('syj_user'), $request->getCookie('syj_hashpass'))) { self::logout(); } }