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

Я бы ожидал, что буду просматривать только пользователей внутри компании.. что может быть не так с моим контроллером?

Author: mastahb, 2013-08-14

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

И перечисленные пользователи имеют только зарегистрированную группу пользователей.

 2
Author: Bora, 2013-08-14 12:15:55

Может быть, вам это нужно

$group_id = 3; //your group id in database $this->data['users'] = $this->ion_auth->users($group_id)->result();

Затем выполните цикл в своем представлении.

 0
Author: Latief Anwar, 2015-12-22 17:59:53