Beginner WEB-developer Blog of WEB-design. Most development in Kohana. Writing the components and modules for Joomla!

29Янв/116

Своя CMS – разделение прав

Разделение прав

Разделение прав

Это вторая статья из цикла "CMS на Kohana". Первая статья.

Попытаюсь объяснить суть разделения прав в моей еще не написанной, но уже обдуманной на сто раз CMS.

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

Права решил хранить в BD и храню их в виде строки со столбцами:  id, controller, com, act, value.

Назначение полей id, controller, com, act думаю понятно.

А вот с value немного посложнее.

Вот в чем дело. Каждый пользователь в Kohana (а использую я стандартный модуль авторизации AUTH) принадлежит как минимум к группе Login и возможно к еще нескольким группам. Поэтому в зависимости в каких группах состоит пользователь - такие и права. Соответственно нужно охарактеризовать принадлежность к нужным группам одним значением.

Самое простое, что пришло в голову - перемножить id групп данного пользователя и получить уникальное число. Назавем это число коэфициентом доступа (КД)

Далее.

  • В поле value содержится строка, в которой перечислены через запятую те КД,  для которых данное дествие в данном контроллере разрешено.
  • Также поле value может содержать текстовую строку "ALL", в таком случае данное действие разрешено всем группам.
  • Если записи для действия в базе не имеется, то действие запрещено всем группам.

Реализуя данный алгоритм, получаем слудующуй последовательность выяснения  - есть доступ или нет.

  1. Пользователь переходит по ссылке (или вводит в адресную строку соответствующий URL).
  2. Передается управление соответствующему контроллеру.
  3. Далее идет обращение к модулю, который отвечает за реализацию компонентной системы.
  4. Там метод модуля Permisions определяет разрешить доступ или нет.
  5. Ну и соответственно выдает решение.

Ну вот в кратце суть. Если что-то не совсем понятно спрашивайте в комментах, обязательно напишу и разъясню. Если есть идеи другой реализации со стандартным кохановским AUTH тоже с удовольствием выслушаю.

Комментарии (6) Пинги (0)
  1. ..обяснить ..на сро раз CMS. ))

  2. Спасибо за комментарий. Глупые ошибки))

  3. Интересный топик, Где-то я уже такое видел, .

  4. Видел Ваш модуль тестирования. Вы можете переделать его для джумлы 1.5 за деньги? очень срочно

  5. Спасибо. Прочитал с интересом. Блог в избранное занес=)


Leave a comment

Нет обратных ссылок на эту запись.