Официальный сайт студ.городка НГТУ
Программирование и БД » [mysql, php] Проектирование ACL 

#1  28.10.11 00:29

[mysql, php] Проектирование ACL

Всю голову сломал.
Требуется в проекте сделать ACL, то бишь распределить доступ до разделов проекта как можно гибче и наглядней. Проект сделан на основе codeigniter (исторически так получилось) переделанным чутка под свои нужды. Используется парадигма MVC, то есть распределить доступ по ролям только по контролерам просто: делаем таблицу с ролями (админ, модер, редактор, пользователь и гость) и делаем таблицу с названиями котроллеров, затем делам нормализацию с помощью третьей таблицы где и указываем действия ролей пользователя. И тогда одним запросом можно определить чего может пользователь c id=2, например в случае если контроллер есть news:

$query = $db->query('SELECT b.permissions FROM roles_users AS a  INNER JOIN roles_modules AS b ON a.rid=b.id AND cname="news" WHERE a.uid=2');

цепочка такая: получаем все роли пользователя->получаем роли только для контроллера news и в $query()->row()->permissions получаем строку к примеру "access post_topic post_comments", что говорит нам о том что у пользователя с id=2 есть доступ, возможность постить новости и комменты.

Но вот как быть если есть контроллер forum, у которого нужно разделить права в зависимости от id форума?

Offline

#2  28.10.11 09:54

Re: [mysql, php] Проектирование ACL

просто добавить колонку fid или конкретизировать cname = "forum.id" не подходит? или даже через REQUEST_URI? или я что-то не понял.

Offline

#3  28.10.11 17:32

Re: [mysql, php] Проектирование ACL

iDrum написал(а):

Но вот как быть если есть контроллер forum, у которого нужно разделить права в зависимости от id форума?

в 3-й таблице поле extra, в него что-то контекстное

Offline

Программирование и БД » [mysql, php] Проектирование ACL 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.091 сек.
Выполнено 11 запросов.