2013-08-14 4 views
2

Я установил управление пользователями с помощью 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 .. ват может быть неправильно с моим контроллером?

ответ

2

Сначала получите группы зарегистрированных пользователей.

$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 

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

+0

Спасибо за ответ. Я изменил свой код (см. Выше для изменений). Я ожидал, что мой auth/index покажет только пользователей внутри компании, но я все еще вижу всех пользователей. – mastahb

+0

@mastahb 'in_group' - это только проверка пользователя в группе или нет. С моими кодами только список пользователей передал группу. И я обновил коды о строке '$ this-> data ['users']'. Проверять, выписываться. – Bora

+0

Я решил эту проблему, создав новую функцию внутри моего ion_auth_model, чтобы получить правильные данные из БД – mastahb

0

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

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

затем петлю на ваш взгляд.

 Смежные вопросы

  • Нет связанных вопросов^_^