public static function get() { return CrugeUtil::factory(); }
protected function restoreFromCookie() { // invocada cuando allowAutoLogin es true. // 1. Cuando se invoca a login() y allowAutoLogin es true y // ($duration > 0), se invoca a saveToCookie guardando // alli el ID del usuario. // 2. Se recuperara el ID del usuario, luego // se buscara el objeto CrugeSession que tenga asignado, // el mas nuevo, y se revalida a ver si no ha caducado, // para finalmente reasignarlo a la autenticacion. // 3. Si la sesion del usuario en CrugeSession ha caducado // o ha sido cerrada por el administrador entonces // el usuario debera iniciar sesion manualmente nuevamente. $app = Yii::app(); $request = $app->getRequest(); $cookie = $request->getCookies()->itemAt($this->getStateKeyPrefix()); if ($cookie && !empty($cookie->value) && is_string($cookie->value) && ($data = $app->getSecurityManager()->validateData($cookie->value)) !== false) { // el valor de la cookie es seguro $data = @unserialize($data); if (is_array($data) && isset($data[0], $data[1], $data[2], $data[3])) { list($id, $name, $duration, $states) = $data; // echo "--data es: id={$id},name={$name}, duration={$duration}--"; $factory = CrugeUtil::factory(); $_crugeuser = $factory->getICrugeStoredUserLoadModel($id); // si _crugeuser es null hay exception y no continuara. if ($this->beforeLogin($id, $states, true)) { $this->changeIdentity($id, $name, $states); // esto solo vuelve a darle vida a la cookie por mas tiempo if ($this->autoRenewCookie) { $cookie->expire = time() + $duration; $request->getCookies()->add($cookie->name, $cookie); } // busca la ultima sesion cruge, reutilizandola, no crea // ninguna nueva, solo reutiliza. $_crugesession = $factory->getICrugeSessionFindLastByUser($id); if ($_crugesession != null) { $this->setSessionId($_crugesession->primarykey); $this->afterLogin(true); } else { // las credenciales estan aun en cookie, validas, pero // el usuario de cruge (al que hace referencia) ya no // tiene una Sesion valida dentro del sistema. } } } } else { // las credenciales almacenadas han caducado } }