CodeIgniter Ion Auth: Как работает admin()?
Я использую Ion_auth для CodeIgniter в моей библиотеке аутентификации проекта. Я пытаюсь сделать аналогичную функцию is_admin()
для других типов пользователей (есть три типа пользователей, кроме администратора), чтобы проверить, относится ли пользователь, вошедший в систему, к одному из этих трех типов, чтобы я мог перенаправить их на соответствующие страницы. Ion_auth использует событие под названием is_admin, но я не могу понять, где это происходит в Ion_auth_model.php
и как оно проверяет, является ли вошедший в систему пользователь администратором. Так как я могу сделать другие функции/события похожими на эту?
Я знаю, что могу просто сделать что-то вроде запроса базы данных и проверить группу пользователей, но я хочу сделать так, как сделал Ion_auth. Таким образом, я также могу удовлетворить себя, действительно понимая биржевой код.
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');
}
Функция is_admin()
относится к группе администраторов, определенной в файле/application/config/ion_auth.php: $config['admin_group'] = 'admin'; // Default administrators group, use name
.
Само имя admin_group хранится в поле базы данных ion_auth groups.name .