Я установил управление пользователями с помощью Ion auth в codeigniter. Теперь я столкнулся со следующей проблемой.Ion auth покажет только пользователей в определенной группе
При входе в систему и посещении страницы авто/индекса отображается обзор пользователей. Я использую 3 разных уровня администратора. Каждый пользователь подключен к компании. (Идентификатор компании добавляется в таблицу users_groups)
Администратор компания-администратор компания-пользователь
супер администратор должен видеть все пользователи, админ должны видеть только пользователи, которые также в такая же компания У пользователя нет доступа к auth/index (который уже работает)
Как создать страницу таким образом, чтобы администратор видел только своих пользователей. Ниже приведен пример функции индекса моего контроллера 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);
}
Я хотел бы ожидать, чтобы просмотреть только пользователей внутри компании thoug .. ват может быть неправильно с моим контроллером?
Спасибо за ответ. Я изменил свой код (см. Выше для изменений). Я ожидал, что мой auth/index покажет только пользователей внутри компании, но я все еще вижу всех пользователей. – mastahb
@mastahb 'in_group' - это только проверка пользователя в группе или нет. С моими кодами только список пользователей передал группу. И я обновил коды о строке '$ this-> data ['users']'. Проверять, выписываться. – Bora
Я решил эту проблему, создав новую функцию внутри моего ion_auth_model, чтобы получить правильные данные из БД – mastahb