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.