Как создать проверка подлинности пользователей с уровнями доступа в codeigniter?


у Меня есть эта модель и контроля, который проверяет и подтверждает зарегистрированных пользователей в таблице tb_users базы данных. Нужен скрипт, который проверяет, является ли пользователь 0 или 1 - в столбце nv_nivel. Если пользователь равна 0 он направляет redirect('usuario/home', 'refresh'); равно 1 направляет для redirect('admin/home', 'refresh');

ниже код Model и Controller.

-> Model

   class Login_model extends CI_Model {

    function ValidaLogin() {
        $this->db->where('hl_email', $this->input->post('email'));
        $this->db->where('pw_password', md5($this->input->post('senha')));
        $query = $this->db->get('tb_user');
        if ($query->num_rows == 1) {
            return true;
        }
    }
}

-> controller

public function valida() {

        $this->load->model('login_model'); //Carrega o model
        $query = $this->login_model->ValidaLogin(); //Chama a função da Model que checa o usuário no BD

        if ($query) { //Se o Usuário e senha existir no mesmo registro...
            $data = array(
                'login' => $this->input->post('email'),
                'is_logged_in' => true
            );
            $this->session->set_userdata($data);
            redirect('usuario/home', 'refresh');
        } else { // incorreto username ou password
            $info['msg'] = "Informações incorretas";
            $this->load->view('header_html');
            $this->load->view('header_view');
            $this->load->view('login/login_view', $info);
            $this->load->view('footer_view');
            $this->load->view('footer_html');
        }
    }
Author: ThiagoDeveloper, 2014-01-30

2 answers

Первый вариант, который у вас есть-это создание этой "системы" привилегий в руку. Как?

В таблице "пользователи" или " в третьем, связанные, создайте столбец с именем role, функция и определите значение такого.

После того, как, преодолев if, мы можем различать роли пользователя, и определить что-то для него. Например:

if ($user->role == 1) {
    // é administrador
} else {
   // não é administrador
}

, Или, если хотите, вы можете использовать библиотеку готова, как Ion Auth.

, к Сожалению, CI не имеет role provider, родной.

 1
Author: Guilherme Oderdenge, 2014-01-30 12:10:24

Как вы это нуждающихся является ACL - ACCESS CONTROL LIST) , существует готовы, что это очень хорошо, называется - Ion Auth.

, Посетите веб-сайт Ion Auth Docs, посмотрите в документации, загрузите и настройте его в проекте.

 0
Author: byteman, 2014-02-18 22:36:00