Yii Framework Forum: login al entrar al modulo - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

login al entrar al modulo Necesidad de loguearse en cada modulo Rate Topic: -----

#1 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 202
  • Joined: 02-October 13
  • Location:Cuba

Posted 04 August 2017 - 09:22 AM

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.
0

#2 User is offline   lagogz 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 739
  • Joined: 30-November 12
  • Location:Galiza

Posted 31 August 2017 - 04:27 AM

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.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

#3 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 202
  • Joined: 02-October 13
  • Location:Cuba

Posted 31 August 2017 - 10:45 AM

View Postlagogz, on 31 August 2017 - 04:27 AM, said:

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
0

#4 User is offline   lagogz 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 739
  • Joined: 30-November 12
  • Location:Galiza

Posted 05 September 2017 - 03:05 PM

Buenas, Rafa.

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

Un saludo.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users