login al entrar al modulo

Hola comunidad, he instaurado el trabajo con modulos, pero necesito al entrar a cada modulo usar usuario y contraseña para hacerlo, hoy estoy haciendo al entrar al sistema general aqui pongo mi usuario y contraseña, donde sale la pagina principal con los iconos para cada modulo y el loyaout principal con los modulos, entonces entro a cada modulo segun el rol dado para poder entrar al modulo, cuando entra ya estas logueado, pero quiero tener un doble login, para cuando entro al sistema general y para cada modulo, uso cruge. Espero ayuda.

Buenas, Rafa. Y perdona por la tardanza (tuve unos problemillas que me impidieron estar por aquí).

A ver:

1- Para entrar en un módulo utilizas una acción.

2- Esa acción está definida en un controlador.

3- En el controlador puedes ponerle reglas de acceso a las acciones.

4- Ya lo tienes sin necesidad de 2 logins (yo no lo veo funcional). Dependiendo del tipo de usuario permites utilizar las acciones de un módulo o no.

El doble login no lo veo. Pon reglas a tus acciones y listo. Por ejemplo:

  • Tenemos 2 tipos de usuario, ‘userType1’ y ‘userType2’.

  • Lo único que debemos hacer es crear la/s regla/s adecuada/s:




public function accessRules()

        {

            return array(

                        // Permite a los usuarios de tipo 'userType1' utilizar la acción 'actionName1'.

                        array('allow', 

                            'actions'=>array('actionName1'),

                            'expression'=> Yii::app()->user->checkModuleAccess('userType1'),

                        ),

                        // Permite a los usuarios de tipo 'userType2' utilizar la acción 'actionName2'.

                        array('allow', 

                            'actions'=>array('actionName2'),

                            'expression'=> Yii::app()->user->checkModuleAccess('userType2'),

                        ),

                        // Permite a todos los usuarios utilizar la acción 'actionName3'.

                        array('allow', 

                            'actions'=>array('actionName3'),

                            'users'=> '*',

                        ),

                        array('deny',  // deny all users

                                'users'=>array('*'),

                            ),

            );

        }




Simplemente debes crear la función ‘checkModuleAccess’ en la clase que uses para tu usuario (CWebUser o la que extienda de ella, en principio la deberías de tener en components y listo).

Por ejemplo:




function checkModuleAccess($userType)

{

     return (Yii::app()->user->userType === $userType)?true:false;

}



El identificador de tipo de usuario lo recoges de donde lo tengas. Supongo que lo tendrás en las clases de usuario. Sino lo coges de donde lo tengas.

Y si quisieras comprobar para varios usuarios, en lugar de una cadena le pasas un array y modificas la función como corresponda. O anidas llamadas a la función con distintos usuarios en accessRules con el operador or ( || ).

Lo de 2 logins…como q no.

Un saludo.

ok gracias lagogz por responder, en realidad cuando entro al modulo lo hace solo para los usuarios que tienen acceso creado, para eso cree roles a los diferentes modulos y a los usuarios quenecesitan entrar a ese modulo le asigne el rol y listo, si el uasuario no tiene el rol asignado no le permite entrar, eso lo hice en el controlador del modulo en beforeControllerAction, lo puse asi:




public function beforeControllerAction($controller, $action) {

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

        	if (!Yii::app()->user->checkAccess("pongo el rol", Yii::app()->user->id)) {

            	throw new CHttpException(403, Yii::t('yii', 'Usted no se encuentra autorizado a realizar esta accion'));

        	} else {

            	return true;

        	}

    	} else

        	return false;

	}



Entonces si con eso es necesario, en verdad no necesito el doble login

Buenas, Rafa.

Pero entonces si ya lo tenías así, para qué quieres 2 logueos?

Un saludo.