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.