Configurar método accesRules con una variable en sesión

Hola a todos,

Ya que es bastante cómodo el método accesRules del fichero Controler, mi pregunta es si se puede permitir acciones dependiendo de alguna variable que tengamos en sesión.

Por ejemplo, yo tengo varios tipos de usuarios y unos son administradores y otros gestores, se diferencian por un campo que tengo en la tabla Usuarios que la he llamado ‘permissions’.

Y bueno, no se si se puede filtrar el accesRules por algún campo determinado, que esté en sesión o leyendo de base de datos.

No se si me expliqué bien. ¿Alguien me puede ayudar?

Gracias

Si, por supuesto que se puede. Yo lo uso. te paso un ejemplo. tenes que usar "expression"

solo tenes que poner entre " " la llamada a un método que retorna true o false





	public function accessRules()

	{

		return array(

			array('allow', 

				'actions'=>array('index','view'),

				'expression'=>"Seguridad::tieneRol('CREDENCIAL_CONSULTA')",

			),

			array('allow', 

				'actions'=>array('admin','delete','create','update'),

				'expression'=>"Seguridad::tieneRol('CREDENCIAL_ADMIN')",

			),

			array('deny',  // deny all users

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

			),

		);

	}




saludos

Gracias Horacio,

ya lo había solucionado de esta manera:




array('allow', 

    'actions'=>array('admin','delete'),

    'expression'=>'Usuario::model()->findByPk(Yii::app()->user->getId())->COD_GESTOR=="GES0001"',

),



Pero me gustó tu idea, lo voy a probar.

saludos

Puedes echar un vistazo a rbac o acceso basado en roles. Es una característica incluida en Yii que te permite organizar mejor el tema de los permisos para cada usuario basado en su rol dentro de la aplicación.

Claro que es una implementación más compleja, pero no está de más saber como funciona.

Gracias MRivera, le echaré un vistazo.

saludos