Lo que estoy haciendo es intentar manejar el acceso a controladores específicos, donde cada modulo tiene un o mas controladores
Ademas un usuario puede tener muchos perfiles, pero cada perfil tiene uno o barios módulos.
El caso es que en ModulosxPerfil, esta el campo "permisos" en el cual yo asigno el nivel de acceso para un determinado perfil en un modulo.
Los permisos son de tipo 777(Ingresar, Modificar, Buscar, Eliminar) y así va bariando.
Para trabajar en codeigniter agregue en la carpeta library, la libreria Session, porque maneja mejor las sessiones que la libreria nativa.
Cuando un usuario hace login, se envia por session el perfil de usuario para luego sacar a que menus tiene acceso asi:
controlador: login.php function validar_user
Código PHP:
$this->load->model('usuario_model');
$query = $this->usuario_model->validar();
if($query['op'])
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true,
'perfil' => $query['idPerfil']
);
$this->session->set_userdata($data);
redirect('site/principal');
}
else
{
$this->index();
}
}
Código PHP:
//extrae el id de perfil
$idPerfil = $this->session->userdata('perfil');
$this->load->model('menu');
//extre los accesos a los modulos y el nivel de permiso
$data['datos_menu']=$this->menu->ModuloControlador($idPerfil);
//esto es para un menu lateral que tengo, los datos de un array completo seria
// $data['lateral']= arrya("nombreControlado","permisos","mostrar_menu");
$data['lateral'] = array('','','no');
view: inicio.php
Código PHP:
if($lateral[2]=='si'){
echo '<div class="grid_3" id="menulateral">
<ul class="ulateral">';
//lista los menus segun su acceso
switch ($lateral[0]){
case 1: ?>
<li><?php echo '<a href="'.base_url().$lateral[1],'/buscar_'.$lateral[1].'/'.$lateral[0].'">'; ?>Buscar</a></li>
<li><?php echo '<a href="'.base_url().$lateral[1],'/registrar_'.$lateral[1].'/'.$lateral[0].'">'; ?>Registrar</a></li>
<li><?php echo '<a href="'.base_url().$lateral[1],'/modificar_'.$lateral[1].'/'.$lateral[0].'">'; ?>Modificar</a></li>
<li><?php echo '<a href="'.base_url().$lateral[1],'/eliminar_'.$lateral[1].'/'.$lateral[0].'">'; ?>Eliminar</a></li>
<?php
break;
.
.
.
}
echo '</ul></div>
<div class="grid_9" id="content">';
}else{
echo '<div class="grid_13">';
}
?>
¿Qué podria hacer?