Разрабатываю свой велосипед которому стал нужен acl. Посмотрел реализацию в drupal, cake и тд. ничего не подходит.
Велосипед работает на парадигме MVC, есть сущность и активность (например сущность forum, активность topic). Распределить доступ по пользовательским группам в рамках целого модуля не составляет труда:
class Acl
{
function __construct()
{
$module = $this->router->fetchCurrentModule();
$gid = $this->user->getGroupId();
$query = $db->query('SELECT perm FROM groups_permission WHERE module='.$db->escape($module).' AND gid='.$gid);
if($query->num_rows())
$perm = $query->row()->perm;
else
$perm = '';
if (strpos($perm, 'access') === FALSE) { // пока ограничение связаны только с доступом, потом можно ввести edit delete и тд.
show_message('You have no access to this module');
}
}
}
Но как быть если я хочу распределить доступ до определенного форума? Можно ввести дополнительную таблицу forum_permission с полями user_id и perm, но как быть с другими модулями в том случае если у них нет такой таблицы. Вообщем ищу алгоритм реализации ACL