#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

