Modulos en Yii y Yii::app()->user

Tengo una aplicacion que al cargar, reconoce los modulos que tenga incluido, mas los modulos que puedan tener estos otros modulos. Todo esto me funciona bien, el problema lo tengo con Yii::app()->user, cada ves que ejecuto la accion de un contralador de uno de los modulos, me dice que Yii::app()->user es Guest y cuando vuelvo a una accion de la aplicacion vuelve a tener el usuario logueado. Que podrá ser? Cualquier ayuda será bienvenida.

¿Lo haz podido solucionar?

Se me ocurre que son los módulos regenerando las sessions, pero habría que revisar el código.

Slds.

JP

Si lo resolvi.

Un poco de historia.

En el fichero de inicio de la aplicacion (index.php) sustituí

Yii::createWebApplication($config)->run();

por

class VRSTWebApplication extends CWebApplication

{

public function __construct($config=null)


{


        parent::__construct($config);


        


        $this->_configurarModulosAplicacion();


}





private function _configurarModulosAplicacion()


{


    $modulos=array();


    $mods=AyudaModulo::modulosExistentes(realpath(Yii::app()->basePath . DIRECTORY_SEPARATOR . 'modules'));


    foreach($mods as $mod) {


        $this->setImport(array(


                'application.modules.'.$mod.'.models.*',


                'application.modules.'.$mod.'.components.*',


        ));


        $this->setModules(array($mod=>array('id'=>$mod)));





        $modulo=$this->getModule($mod);


    }


}

}

$webApp=new VRSTWebApplication($config);

$webApp->run();

Esto para detectar los modulos que existen dentro de la carpeta protected/modules y configurarselos a la aplicacion. La liniea $modulo=$this->getModule($mod); me sirve para que cada modulo configurado al cargarse tambien "recargue" los modulos que tenga dentro. Para esto cree una clase que hereda de CWebModule y pongo todos mis modulos a heredar de ella. Esta clase tiene un metodo que se se encarga de cargar los modulos interiores, este es el codigo:

private function _configurarModulosComponentes()


{


       $this->setImport(array(


                $this->id.'.models.*',


                $this->id.'.components.*',


        ));





        $mods=AyudaModulo::modulosExistentes($this->modulePath);


        foreach($mods as $mod) {


            $strMod=strtolower($mod);


            $this->setImport(array(


		$this->id.'.'.$strMod.'.models.*',


		$this->id.'.'.$strMod.'.components.*',


	));





            $this->setModules(array($strMod=>array('id'=>$strMod)));


            $modulo=$this->getModule($strMod);


        }


}

Como resolví lo del usuario?

Pues en esta misma clase redefiní el metodo:

public function beforeControllerAction($controller, $action)


{


    if(parent::beforeControllerAction($controller, $action))


    {


        if ((Yii::app()->session['usuarioNombre']=='')||(Yii::app()->session['usuarioClave']==''))


        {


            $controller->redirect(Yii::app()->homeUrl);


        }


        if (Yii::app()->user->isGuest)


        {


            $LoginForm = new LoginForm;


            $LoginForm->username = Yii::app()->session['usuarioNombre'];


            $LoginForm->password = Yii::app()->session['usuarioClave'];


            $LoginForm->login();


        }


        


        return true;


    }


    else


        return false;


}

pregunto por dos variables de sesión, usuarioNombre y usuarioClave, si estan vacias redirecciono para homeUrl, si no entonces creo un nuevo modelo LoginForm y hago Login.

Esto es lo que tengo hecho, soy bastante nuevo en esto, vengo de programacion para Windows y mi esperiencia es bastante pobre en esto de la programación web, no se si seran barbaridades lo que he hecho, hasta el momento esto me funciona de esta manera, si tienen alguna sugerencia, será bienvenida.

Gracias por responder.