Ion auth показывает только пользователей в определенной группе
Я установил управление пользователями с помощью Ion auth в codeigniter. Теперь я столкнулся со следующей проблемой.
При входе в систему и посещении страницы автоиндексации отображается обзор пользователей. Я использую 3 разных уровня администратора. Каждый пользователь связан с компанией. (идентификатор компании добавляется в таблицу users_groups)
Компания-администратор - компания-администратор -пользователь
Суперадминистратор должен видеть всех пользователей, Администратор должен видеть только пользователей, которые также находятся в том же компания У пользователя нет доступа к auth/индексу (который уже работает)
Как я могу создать страницу таким образом, чтобы администратор видел только пользователей своей компании. Ниже приведен пример индексной функции моего auth.php контроллер.
//redirect if needed, otherwise display the user list
function index()
{
if (!$this->ion_auth->logged_in())
{
//redirect them to the login page
redirect('dashboard/', 'refresh');
}
elseif ($this->ion_auth->in_group('company-user'))
{
//redirect them to the home page because they must be an administrator to view this
redirect('dashboard/', 'refresh');
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
//list the users
$this->data['users'] = $this->ion_auth->users()->result();
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->groups = $this->ion_auth->get_users_groups($user->id)->result();
}
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->companies = $this->ion_auth->get_company($user->id)->result();
}
}
elseif ($this->ion_auth->logged_in() && $this->ion_auth->in_group("company-admin"))
{
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
//list the users
$this->data['users'] = $this->ion_auth->users()->result();
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->groups = $this->ion_auth->get_users_groups($user->id)->result();
}
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->companies = $this->ion_auth->get_company($user->id)->result();
}
$this->_render_page('admin/auth/index', $this->data);
}
else
{
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
//list the users
$this->data['users'] = $this->ion_auth->users()->result();
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->groups = $this->ion_auth->get_users_groups($user->id)->result();
}
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->companies = $this->ion_auth->get_company($user->id)->result();
}
$this->_render_page('admin/auth/index', $this->data);
}
}
Кто-нибудь знает, что мне нужно добавить в часть elseif ($this->ion_auth->in_group ("компания-администратор")), чтобы показывать только пользователей в той же компании, что и администратор компании?
//////////////////////////////////////////////////////
Спасибо за ответ. Теперь я внес следующие изменения:
Я отвечаю таким образом, чтобы иметь возможность показать код. Я сменил свой контроллер, но все еще вижу пользователей из других компаний. Я изменил это следующим образом:
elseif ($this->ion_auth->in_group("company-admin"))
{
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
// Check the company the user is in
$user_in_company = $this->ion_auth->get_users_companies(); // Return array groups
//list the users
$this->data['users'] = $this->ion_auth->users()->result($user_in_company);
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->groups = $this->ion_auth->get_users_groups($user->id)->result();
}
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->companies = $this->ion_auth->get_company($user->id)->result();
}
$this->_render_page('admin/auth/index', $this->data);
}
Я бы ожидал, что буду просматривать только пользователей внутри компании.. что может быть не так с моим контроллером?
2 answers
Сначала получите группы зарегистрированных пользователей.
$user_in_group = $this->ion_auth->get_users_groups(); // Return array groups
И получите список пользователей, у которых есть одна группа с зарегистрированным пользователем
$this->data['users'] = $this->ion_auth->users($user_in_group)->result(); // Pass groups array as params
И перечисленные пользователи имеют только зарегистрированную группу пользователей.
Может быть, вам это нужно
$group_id = 3; //your group id in database
$this->data['users'] = $this->ion_auth->users($group_id)->result();
Затем выполните цикл в своем представлении.