Создать разрешение без проверки сегмента URI на Codeigniter

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

$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?

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

0

Решение

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

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

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

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

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

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

  • пользователи / прибудет / 1
  • Пользователь / марко-Monteiro

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector