Своя CMS – разделение прав
Это вторая статья из цикла "CMS на Kohana". Первая статья.
Попытаюсь объяснить суть разделения прав в моей еще не написанной, но уже обдуманной на сто раз CMS.
Итак мне нужно, чтобы разные группы пользователей имели разные права доступа к компонентам, модулям системы. Кроме того, каждый модуль может иметь несколько действий, поэтому логично бы одним пользователям разрешить например удаление, другим запретить.
Права решил хранить в BD и храню их в виде строки со столбцами: id, controller, com, act, value.
Назначение полей id, controller, com, act думаю понятно.
А вот с value немного посложнее.
Вот в чем дело. Каждый пользователь в Kohana (а использую я стандартный модуль авторизации AUTH) принадлежит как минимум к группе Login и возможно к еще нескольким группам. Поэтому в зависимости в каких группах состоит пользователь - такие и права. Соответственно нужно охарактеризовать принадлежность к нужным группам одним значением.
Самое простое, что пришло в голову - перемножить id групп данного пользователя и получить уникальное число. Назавем это число коэфициентом доступа (КД)
Далее.
- В поле value содержится строка, в которой перечислены через запятую те КД, для которых данное дествие в данном контроллере разрешено.
- Также поле value может содержать текстовую строку "ALL", в таком случае данное действие разрешено всем группам.
- Если записи для действия в базе не имеется, то действие запрещено всем группам.
Реализуя данный алгоритм, получаем слудующуй последовательность выяснения - есть доступ или нет.
- Пользователь переходит по ссылке (или вводит в адресную строку соответствующий URL).
- Передается управление соответствующему контроллеру.
- Далее идет обращение к модулю, который отвечает за реализацию компонентной системы.
- Там метод модуля Permisions определяет разрешить доступ или нет.
- Ну и соответственно выдает решение.
Ну вот в кратце суть. Если что-то не совсем понятно спрашивайте в комментах, обязательно напишу и разъясню. Если есть идеи другой реализации со стандартным кохановским AUTH тоже с удовольствием выслушаю.
Понравилась статья?
Нет обратных ссылок на эту запись.

Март 25th, 2011 - 23:49
..обяснить ..на сро раз CMS. ))
Март 28th, 2011 - 08:24
Спасибо за комментарий. Глупые ошибки))
Апрель 7th, 2011 - 11:31
Интересный топик, Где-то я уже такое видел, .
Апрель 20th, 2011 - 17:20
Видел Ваш модуль тестирования. Вы можете переделать его для джумлы 1.5 за деньги? очень срочно
Апрель 20th, 2011 - 19:31
Срочно не могу, очень много работы. Завален по самое нехочу.
Май 12th, 2012 - 01:51
Спасибо. Прочитал с интересом. Блог в избранное занес=)