Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Acessar dados userdata ou session

Olá pessoal, Como vão?

Estou com um probleminha no sistema de autenticar...

Preciso acessar uma variável da session, que foi puxada do banco como mostrada na aula. Além dos campos do curso, acrescentei o tipo de usuario no banco e preciso verificar se o tipo de usuario corresponde com o controller que está tentando acessar.

var_dump($_SESSION); array(5) { ["ci_last_regenerate"]=> int(1437132186) ["usuario_logado"]=> array(5) { ["id"]=> string(1) "1" ["nome"]=> string(4) "Igor" ["email"]=> string(22) "igorlucast@hotmail.com" ["senha"]=> string(32) "202cb962ac59075b964b07152d234b70" ["tipo_usuario"]=> string(9) "super-adm" } ["success"]=> NULL ["danger"]=> string(10) "não bateu" ["ci_vars"]=> array(1) { ["danger"]=> string(3) "old" } }

controller formulario:

public function formulario() {

        var_dump($_SESSION);

        if($_SESSION["usuario_logado"] == "super-adm") {

        $this->load->helper(array("currency", "form"));
        $this->load->view("produtos/formulario");

        $this->output->enable_profiler(TRUE);    

        } else {

        $this->session->set_flashdata("danger", "não bateu");
        }

    }

Além deste modo , (verificar pelo $_SESSION), também tentei : $this->session->userdata("tipo_usuario")

$this->session->userdata("usuario_logado")

Obrigado pessoal!

2 respostas

Opa pessoal!

Achei a solução, pelo menos funcionou.. heheh

Vamos lá;

public function formulario() {

        $this->load->helper('array');

        $acesso = "super-adm";

        if (element('tipo_usuario', $this->session->userdata('usuario_logado')) == $acesso) {

        $this->load->helper(array("currency", "form"));
        $this->load->view("produtos/formulario");

        $this->output->enable_profiler(TRUE);   

        } else {

        }
}

Carreguei o helper de array, acessei pelo elemento "tipo_usuario" a informação do elemento do array e fiz um IF se fosse igual o que eu precisava definir... Consegui fazer um controle de acesso dessa maneira, ufa!

Não se essa é a melhor abordagem...

solução!

Acabei de localizar um erro nessa abordagem, Ao realizar o logout a session não terá mais o elemento, causando um erro de falta de parametro setado...

Portanto acrescentei mais uma condição no if:

public function formulario() {

        $this->load->helper('array');

        $acesso = "super-adm";

        if ($this->session->userdata('usuario_logado') != NULL && element('tipo_usuario', $this->session->userdata('usuario_logado')) == $acesso) {

        $this->load->helper(array("currency", "form"));
        $this->load->view("produtos/formulario");

        $this->output->enable_profiler(TRUE);   

        } else {

        }
    }