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

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

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

2 ответа

Решение

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

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

ваша функция, которую вы ищете, находится на линии 447 в файле application/library /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)

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

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');
    }

источник

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

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

Другие вопросы по тегам