Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/01/2011, 16:37
Avatar de Copia
Copia
 
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
gestion de Usuarios en Codeigniter, con problemas.

Hola amigos, en estoy dias e intentado hacer un sistema de gestion de usuario se que en realidad no es un sistema pero me gusta como suena. Para esto e generado el siguiente modelo.


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();
        }
    } 
Se redirige a site.php function principal()
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'); 
y cuando construyo el menu en la vista tiene este aspecto:
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">';
    }
    
?>
Pues bien esto funciona pero cada link envia por la url un numero para saber en el siguiente controlador nuevamente a que menus tiene acceso, el caso es que si modifican ese numero por la barra de direcciones, pues se muestra menús que no deben, e intentado hacer que en cada link se compruebe el usuario y los permisos cada vez pero no logro aplicarlo y ademas esa acción se repetiría en cada controlador.
¿Qué podria hacer?
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com