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;
 }
Beispiel #2
0
 public function createSession(ICrugeStoredUser $user, ICrugeSystem $sys)
 {
     Yii::log(__CLASS__ . "::createSession. user=#" . $user->getPrimaryKey(), "info");
     return CrugeFactory::get()->getICrugeSessionCreate($user->getPrimaryKey(), $sys->getn('sessionmaxdurationmins'));
 }