Создать разрешение без проверки сегмента URI на Codeigniter - PullRequest
0 голосов
/ 14 декабря 2018

у меня есть функция из моей простой библиотеки, и я вызвал некоторые контроллеры

$activeUrl = str_replace(base_url(),"",current_url());
erporate_acl::has_permission($activeUrl);

, а затем вот код моей библиотеки, здесь код пытается соответствовать текущему URI ($param) данные из базы данных:

public static function has_permission($param){
    $CI =& get_instance();
    $CI->load->model('acl_model');
    $user        = $CI->session->userdata('user');
    $arrPerms    = $CI->acl_model->permissions($user);
    $currentMeth = strtolower(str_replace("::", "/", $param));

    $result = "";
    if (!empty($arrPerms)) 
    {
        if (strpos($currentMeth,'edit') !== false || strpos($currentMeth,'view') !== false || strpos($currentMeth,'delete') !== false) {
            $str = preg_replace('#\/[^/]*$#', '', $currentMeth);
            $result = in_array($str, $arrPerms);
        }else{
            $result = in_array($currentMeth, $arrPerms);
        }

    }else{
        $result = false;
    }

    if ($result == false) {
        show_error("<font size='+1'>Sorry, You Don't Allowed to Access !</font><br><a href='".@$_SERVER['HTTP_REFERER']."'>Back to Previous Page</a>");
    }
}

точка моего сценария выше соответствует in_array, если in_array вернуть false, то мы получили сообщение об ошибке, в противном случае разрешен доступ к странице

Можно ли создать разрешение без проверки сегмента URI?

Спасибо и извините за мой плохой английский

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете использовать следующее:

$this->router->class, чтобы получить используемый класс контроллера;

$this->router->method, чтобы получить вызываемый метод;

$this->router->directory чтобы получить каталог, если в вашем URL есть подпапки.

Таким образом, вам не нужно проверять используемый URL-адрес.Вы можете просто проверить контроллер и метод.

Это независимый путь от маршрутов.Если у вас есть что-то вроде:

  • users / get / 1
  • user / marco-monteiro

ACL на основе сегмента uri может быть сложнымв этих ситуациях.Используя методы, которые я упомянул, это становится проще.

...