2013-12-20 2 views
1

В CodeIgniter, у меня есть функция, чтобы ограничить контроллер,Дайте priviliges доступ в Интернет в CodeIgniter

private function controllerAccess(){ 
    $sessionArray = $this->session->userdata('logged_in'); 
    if($sessionArray['type'] == 'ADMIN' || $sessionArray['type'] == 'SUPERVISOR'){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

Я предотвращающий мой контроллер индекса, делая это,

public function index(){ 
    $system = new SYSTEM(); 
    $this->controllerAccess() ? $this->dashboard() : $system->container('No Access'); 
} 

Проблема заключается в том, нужно ли мне в делать то же самое с каждым публичным методом (контроллером)? Потому что, делая это: я могу получить доступ к дочерним контроллерам. Например, я не могу получить доступ к странице индекса для агента. но я могу получить доступ: agent/dashboard, agent/validate и т. д.

Есть ли способ блокировать весь контроллер? Спасибо.

ответ

0

У меня нет понятия, что вы на самом деле имеете в виду, и я использую CI уже 2 года. Это может быть я, но .. Возможно, вы захотите использовать библиотеку authex, поскольку вы запрашиваете пользовательские данные в своем контроллере, это нехорошо в моих глазах.

Вы должны быть что-то вроде

$user = $this->authex->getSession(); 

А чтобы проверить, если пользователь подходит для просмотра страницы вы просто использовать эту функцию

private function verifyUser() { 
     $user = $this->authex->getSession(); 
     if ($user == null) 
      redirect('hub/notauthorized/', 'refresh'); 
    } 

и вы называете это в каждой публичной функции, где Вам чтобы проверить права пользователя, подобные этому

$this->verifyUser(); 
0

просто запустите функцию в co nstructor вашего контроллера, а затем функция будет запускаться каждый раз, когда ваш контроллер попадает

class YourController extends CI_Controller { 
    public function __construct() 
    { 
     parent::__construct(); 
     if(!$this->controllerAccess(){ 
      //you got a false so redirect or whatever you want to do on negative 

     } 
    } 

    private function controllerAccess(){ 
     $sessionArray = $this->session->userdata('logged_in'); 
     if($sessionArray['type'] == 'ADMIN' || $sessionArray['type'] == 'SUPERVISOR'){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

    public function index(){ 
     $system = new SYSTEM(); 
     $this->controllerAccess() ? $this->dashboard() : $system->container('No Access'); 
    } 
} 
Смежные вопросы