Vamos a ver, estoy desesperado.
He probado todo lo referente al tema, y no he conseguido hacerlo funcionar.
Paso a paso para torpes (osea, para mi):
Primer paso: Configuramos el main.php de CONFIG.
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=portal',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
),
'authManager'=>array(
'class'=>'CDbAuthManager',
'connectionID'=>'db',
),
Segundo paso: Creamos las tres tablas en MySQL.
create table AuthItem
(
name varchar(64) not null,
type integer not null,
description text,
bizrule text,
data text,
primary key (name)
);
create table AuthItemChild
(
parent varchar(64) not null,
child varchar(64) not null,
primary key (parent,child),
foreign key (parent) references AuthItem (name) on delete cascade on update cascade,
foreign key (child) references AuthItem (name) on delete cascade on update cascade
);
create table AuthAssignment
(
itemname varchar(64) not null,
userid varchar(64) not null,
bizrule text,
data text,
primary key (itemname,userid),
foreign key (itemname) references AuthItem (name) on delete cascade on update cascade
);
Tercer paso: Introducimos datos en las tablas para hacer pruebas.
Tenemos un usuario con el Id=3
En la tabla de items (authitem) introducimos:
name=admin
type=2 --------------> Este número corresponde a ROL
description=null
bizrule=null
data=null
-----------------
name=adminUser
type=0 --------------> Operacion
descripction=null
bizrule=null
data=null
En la tabla asignamiento (authassignment) introducimos:
itemname=admin
userid=3
bizrule=null
data=null
En la tabla de padres-hijos (authitemchild) introducimos:
parent=admin
child=adminUser
Cuarto paso: Chequeamos en un controlador
public function actionView($id)
{
if (Yii::app()->user->checkAccess('admin')) {
$this->render('view',array(
'model'=>$this->loadModel($id),
));
} else {
$this->render('view2');
}
}
Es decir, que si el usuario que esta lanzando la accion es el "3" tendria que mostrar "view" y para cualquier otro usuario mostraría "view2".
PUES NOOOOOO.
Siempre muestra "view2".
¿Por qué?
Alguien que me aclare esto.
Muchas gracias.