de la manera como yo lo hago es asi
Tengo una tabla donde es una clave compuesta, o sea se repite una palabra clave y es variable el id del departamento o role
Tabla: menu_acceso
codMenu / user_depart
agregar-usuario / 1
agregar-usuario / 2
agregar-usuario / 5
agregar-usuario / 10
Tengo una funcion que revisa dicha tabla acuerdo al ID_DEPART de cada usuario de la siguiente forma
Código PHP:
Ver original//para saber si que permisos tiene el usuario que se loguea
function PermisosMenu($menu)
{
global $capaNegocios, $datosUsuario, $user_key;
//el administrador puede ver todo
if ($datosUsuario['es_admin'] == 1)
{
return true;
}else{
$idDepart = (int) $datosUsuario['id_depart'];
//verificamos si tiene los permisos necesarios
$tienePermiso = $capaNegocios->ContadorRegistrosTabla('menu_acceso', "where codMenu = '$menu' and user_depart = $idDepart");
if ($tienePermiso > 0)
return true;
else
return false;
}
}
Obs.: la variable que uso $datosUsuario es un array con los datos del usuario que esta logueado
Para usar dicha funcion lo hago desde el array o constructor de mi menu principal de la siguiente forma
Código PHP:
Ver original 'titulo_menu' => 'Agregar Usuarios',
'url' => '?opt=Usuarios/Agregar', //o la url que usas para cada accion
'visible' => PermisosMenu('agregar-usuario'), //este devuelve true o false como se puede ver arriba
),
);
Entonces donde imprimo el menu hago asi
Código PHP:
Ver originalforeach($menu_principal as $key => $value){
if ($value['visible']){
echo '<a href="', $value['url'] ,'">', $value['titulo_menu'] ,'</a>';
}
}