public function startSession(ICrugeStoredUser $user, ICrugeSystem $sys) { $this->lastErrorDescr = ""; $model = null; // primera regla. no admite sesiones de ningun tipo, causando la negacion a todos // los usuarios DEL SISTEMA SELECCIONADO. if ($sys->getn('systemdown') == 1) { $this->lastErrorDescr = "el sistema se encuentra detenido temporalmente"; return null; } // no puede iniciar sesion si su cuenta no esta activada o si esta suspendida // los estados estan definidos en CrugeUserManager::getUserStateOptions if ($user->state == CRUGEUSERSTATE_NOTACTIVATED) { $this->lastErrorDescr = "su cuenta necesita ser activada, revise su correo y haga click en el vinculo de activacion que se le envio"; return null; } if ($user->state == CRUGEUSERSTATE_SUSPENDED) { $this->lastErrorDescr = "su cuenta se encuentra suspendida"; return null; } // busca una sesion abierta para este usuario, para reutilizarla // $model = Yii::app()->user->um->findSession($user); if ($model == null) { // no encontro un sesion reutilizable, procede a crear una nueva si el sistema // se lo permite if ($sys->getn('systemnonewsessions') == 1) { $this->lastErrorDescr = "el sistema esta inhabilitado para otorgar una nueva sesion"; return null; } // procede a crear la sesion para el usuario $model = Yii::app()->user->um->createSession($user, $sys); } else { if ($model->isSessionExpired()) { self::onSessionExpired($model); return null; } else { // TODO: evento para la reutilizacion de una sesion // } Yii::log("DefaultSessionFilter. Reutilizando sesion: " . $model->getPrimaryKey(), "info"); $model->onReusage(); } return $model; }
public function createSession(ICrugeStoredUser $user, ICrugeSystem $sys) { Yii::log(__CLASS__ . "::createSession. user=#" . $user->getPrimaryKey(), "info"); return CrugeFactory::get()->getICrugeSessionCreate($user->getPrimaryKey(), $sys->getn('sessionmaxdurationmins')); }