CodeIgniter – Лучшая реализация для ACL

Каков наилучший способ реализации ACL в CodeIgniter?

  • Роли, группы на основе БД, пользовательские пропуски?
  • Создать библиотеку?

Вот с чем мы работаем:

Статьи, авторы

Существует два типа авторов:

  • Обычный автор (может видеть только свои статьи).
  • Автор, который также является администратором (может видеть все статьи и утверждает другие авторские статьи).

Учитывая, что функциональность будет расширяться (больше функций, требующих ограничения разрешений для типов авторов), что лучший способ сделать ACL в CodeIgniter?

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

// module User_model: function is_logged_in_admin() { $is_logged_in = $this->session->userdata('is_logged_in'); $user_status = $this->session->userdata('user_type'); if(!isset($is_logged_in) || $is_logged_in != true || $user_status != 'admin') { $this->session->sess_destroy(); redirect('please_login/', 'refresh'); } } 

Контроллер, загрузите модуль и проверьте конструкцию:

  function __construct() { parent::__construct(); $this->load->model('User_model'); $this->User_model-> is_logged_in_admin(); } 

Я занимаюсь написанием системы авторизации на основе ACL, которая проверяет разрешения на уровне URL. Он должен быть прозрачным, а система проверки подлинности – агностиком. Он реализован как крюк конструктора пост-контроллера.

К сожалению, это не закончено. но вы можете проверить его на github и развить его, если вам хочется его закончить. atm он работает только с ACL, закодированными в файле конфигурации, но он позволяет использовать внешний источник группы / роли (я еще не написал его еще).