CodeIgniter Ion Auth: Как работает admin()?


Я использую Ion_auth для CodeIgniter в моей библиотеке аутентификации проекта. Я пытаюсь сделать аналогичную функцию is_admin() для других типов пользователей (есть три типа пользователей, кроме администратора), чтобы проверить, относится ли пользователь, вошедший в систему, к одному из этих трех типов, чтобы я мог перенаправить их на соответствующие страницы. Ion_auth использует событие под названием is_admin, но я не могу понять, где это происходит в Ion_auth_model.php и как оно проверяет, является ли вошедший в систему пользователь администратором. Так как я могу сделать другие функции/события похожими на эту?

Я знаю, что могу просто сделать что-то вроде запроса базы данных и проверить группу пользователей, но я хочу сделать так, как сделал Ion_auth. Таким образом, я также могу удовлетворить себя, действительно понимая биржевой код.

Author: Matt, 2014-02-10

2 answers

Я просто смотрю исходный код на github.

Поскольку многие библиотеки аутентификации хранят информацию, которую вы ищете в сеансе, и сама библиотека проверяет переменные сеанса.

Ваша функция, которую вы ищете, находится в строке 447 в файле application/libraries/Ion_auth.php

public function is_admin($id=false)
    {
        $this->ion_auth_model->trigger_events('is_admin');

        $admin_group = $this->config->item('admin_group', 'ion_auth');

        return $this->in_group($admin_group, $id);
    }

Для того, чтобы создать свою собственную, я предлагаю вам изменить модель инженера (ion_auth_model.php)

Но! У Ion уже есть обходной путь для вас, этот метод - то, что вы ищете для

in_group()

$group = 'gangstas';
    if (!$this->ion_auth->in_group($group))
    {
        $this->session->set_flashdata('message', 'You must be a gangsta to view this page');
        redirect('welcome/index');
    }

Источник

 4
Author: Kyslik, 2015-01-22 15:20:44

Функция is_admin() относится к группе администраторов, определенной в файле/application/config/ion_auth.php: $config['admin_group'] = 'admin'; // Default administrators group, use name.

Само имя admin_group хранится в поле базы данных ion_auth groups.name .

 0
Author: cko, 2016-04-24 06:43:22