Codeigniter — как добиться разных областей участника на сайте? Tank_Auth

#php #codeigniter #login-control #tankauth

#php #codeigniter #вход-контроль #tankauth

Вопрос:

Я создал приложение с использованием codeigniter, в котором есть 3 разные группы участников

Администраторы — которые заходят на панель мониторинга и имеют CRUD-средства для добавления / редактирования / удаления событий, шоу и исполнителей

Клиенты — которые входят в систему с внешнего интерфейса и видят все элементы, добавленные администратором через внутренний интерфейс.

Медиа-партнеры — которые входят в систему из интерфейса и видят определенные части того, что может видеть клиент, но не все.

Я интегрировал библиотеку Tank_Auth для раздела клиентов, и все это отлично работает. Чего я хотел бы добиться, так это того, чтобы администратор мог входить в отдельную область администрирования, а медиа-партнеры тоже могли входить в отдельную область.

Каков наилучший способ подойти к этому?

Нужно ли мне создавать отдельные контроллеры панели мониторинга для каждой пользовательской базы и дублировать контроллер Tank_Auth 3 раза и настраивать это?

В идеале пользователи-администраторы также должны иметь возможность добавлять пользователей новостей и входить во все 3 отдельные области?

Кто-нибудь достигал такого решения раньше, если да, то как вы это делали? возможно, tank auth — неправильный подход?

Любой вклад был бы оценен.

Спасибо, Дэн

Ответ №1:

Я использую CI, но не использовал Tank_Auth, у меня есть свой класс auth, и в каждой функции у меня вызывается следующий метод: $this->auth->accessMap(get_class($this),__FUNCTION__);

В классе auth: общедоступная функция accessMap($controller_name,$function_name) { if ($this->perms_array[$controller_name][$function_name]) возвращает true; else $this->redir(); }

У меня есть массив разрешений в конфигурации:

 $config['user_perms']['className']['method1'] = array($config['user_types']['admin']);
$config['user_perms']['className']['method2'] = array($config['user_types']['admin'],$config['user_types']['user']);
  

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

Я надеюсь, что это поможет.

Комментарии:

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

Ответ №2:

Я не могу найти тему на форумах CI, потому что, похоже, я не могу войти на их веб-сайт прямо сейчас, однако выполните поиск ‘zend_acl в codeigniter’. В качестве альтернативы есть этот пост в блоге о том, как это реализовать, но он немного устарел.

ACL расшифровывается как Список контроля доступа, это позволит вам настроить различные разрешения для разных типов пользователей. На мой взгляд, у Zend одна из лучших реализаций ACL.

Более подробную информацию об ACL можно найти на веб-сайте zend.

Комментарии:

1. Спасибо Evolve, я сейчас посмотрю!

Ответ №3:

Отсутствие группы пользователей является проблемой при использовании tank_auth, если у нас несколько групп пользователей. Недавно я столкнулся с этой проблемой. Вот решение, опубликованное в CI forms.

Использование tank_auth как для регистрации конечного пользователя и входа в систему, так и для входа в систему администратора