Roles, levels or user privileges Codeigniter

1

I have a question about the roles or user privileges in Codeigniter, I have a page where I can change the role of each user if he is an administrator or limited user, what I can not do is that when I log in, load his profile if you are an administrator with more privileges and if you are a limited user with less, here I have my controllers Controller Login (Function to log in)

    // Verificar usuario en base de datos
public function iniciar_sesion(){
    $this->form_validation->set_rules('nom_usuario', 'nom_usuario', 'trim|required|xss_clean');
    $this->form_validation->set_rules('pass_usuario', 'pass_usuario', 'trim|required|xss_clean|callback_check_database');
    $nom_usuario = $this->input->post('nom_usuario');
    $pass_usuario = $this->input->post('pass_usuario');
    $result = $this->Login_model->logearse($nom_usuario, $pass_usuario);
    if($result){
            $sess_array = array();
            foreach($result as $row){
        $sess_array = array(
               'nom_usuario' => $row->nom_usuario,
               'pass_usuario' => $row->pass_usuario,
                     'tipo_usuario' => $row->tipo_usuario
              );
                    $this->session->set_userdata('logged_in', $sess_array);
    }
        }else{
            echo "error";
        }

}

The controller model

function logearse($nom_usuario, $pass_usuario){
$this -> db -> select('nom_usuario, pass_usuario');
$this -> db -> from('usuarios');
$this -> db -> where('nom_usuario', $nom_usuario);
$this -> db -> where('pass_usuario', $pass_usuario);
$this -> db -> limit(1);

$query = $this -> db -> get();

if($query -> num_rows() == 1)
{
return $query->result();
}
else
{
return false;
}

}

The controller of the panel or of the page to show if it is logged

  //Cargar la vista Panel
public function index()
{
    if($this->session->userdata('logged_in'))
{
  $session_data = $this->session->userdata('logged_in');
        $this->load->view('header.php');
        $this->load->view('panel');
        $this->load->view('footer.php');
}
else
{
  //Si no ha iniciado sesion redirecionar a login
  redirect('login');

}
}

That in the panel controller could go an if to redirect to its proper profile but I do not know how to insert it, Any idea? thanks

    
asked by Saul Espinoza 25.05.2017 в 16:23
source

1 answer

1

When I work with the sessions of different user types, I program it in the controller in the following way. The code is commented so that you go guiding, I hope and it serves you.

public function __construct(){
    parent:: __construct();

    //revisamos si NO existen las sesiones (se toman los datos necesarios para hacer la comparacion)
    if (!$this->session->userdata("id_usuario") && 
        !$this->session->userdata("username") && 
        !$this->session->userdata("tipo_usuario") &&
        !$this->session->userdata("login_activo")) 
    {
        //Mensaje de error
        $this->session->set_flashdata("error", "Acceso Restringido");
        redirect(base_url()."index.php/login_control"); //ruta a la que queremis que nos redireccione
    } else if($this->session->userdata("tipo_usuario")==2){ //validamos las sesiones correctas del usuaario
        redirect(base_url()."index.php/login_control");
    }else if($this->session->userdata("tipo_usuario")==3){ //validamos las sesiones correctas del usuaario
        redirect(base_url()."index.php/login_control");
    }
    $this->load->model('sesion_model');
}//./constructor
    
answered by 25.05.2017 / 16:33
source