Hola,
He creado un CRUD desde Gii que permite administrar todas las filas de una table. Me gustaría que solo se puedieran hacer labores de administración dependiendo de un campo concreto que coincide con una variable de Sesión.
En el momento de hacer login desde CUserIdentity, ya guardo la variable cod_cliente en sesion.
La tabla en cuestion contiene los siguiente campos:
email
password
nombre
apellidos
cod_cliente
Dónde para un mismo cod_cliente puede haber varias filas en la tabla.
He probado lo siguiente en el controlador, por ejemplo para la acción index:
/**
* Lists all models.
*/
public function actionIndex()
{
//Comprobamos que el usuario está registrado y en sesión. La variable usuario contiene la información
$x=Yii::app()->getSession()->get('usuario');
if($x===null)
throw new CHttpException(403,'Vaya al login');
$cod_cliente=$x['COD_CLIENTE'];
if($cod_cliente===null)
throw new CHttpException(404,'La paqina solicitada no existe.');
$criteria=new CDbCriteria;
$criteria->addCondition("cod_cliente=$cod_cliente");
$dataProvider=new CActiveDataProvider('Users');
$this->render('index',array(
'dataProvider'=>$dataProvider,
'criteria'=>$criteria,
'pagination'=>array('pageSize'=>5),
));
}
La vista no la he tocado, index.php:
<?php
/* @var $this UsersController */
/* @var $dataProvider CActiveDataProvider */
$this->breadcrumbs=array(
'Users',
);
$this->menu=array(
array('label'=>'Create Users', 'url'=>array('create')),
array('label'=>'Manage Users', 'url'=>array('admin')),
);
?>
<h1>Users</h1>
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>
Pero una vez logueado, cuando voy a index.php?r=Users/index sigo viendo TODAS las filas de la tabla. No se si incluso podría ser una restricción a poner en el modelo.
Saludos y gracias de antemano.