Показать сообщение отдельно
  #1 (permalink)  
Старый 12.07.2017, 00:03
Интересующийся
Отправить личное сообщение для Ceргей Посмотреть профиль Найти все сообщения от Ceргей
 
Регистрация: 04.01.2012
Сообщений: 23

Конструктор прав доступа
Всем привет!
Было бы интересно услышать ваши мнения насчет одной штуки, которую я написал, чтобы понять - вообще нужно это или нет.

Как бы громко это ни звучало, но мой проект нацелен на разработчиков cms, crm и т.п. Вся фишка заключается в том, что любая система имеет свою систему доступа. Эти системы могут различаться в мелочах, но как правило в основном сходны в одном - в наличии прав и групп прав. То есть по сути это является "костяком" во многих системах. Так вот: я решил написать сервис, который этот "костяк" мог бы генерировать в SQL-таблицы.

На вход можно отдать JSON (это сжатый вид)

{"p":[{"t":"Новости","r":["1|read_news|Чтение новостей","2|edit_news|Редактирование новостей","3|add_news|Добавление новостей","4|remove_news|Удаление новостей"],"v":[{"i":"1|guests|Гости","e":[1],"d":[],"_":[],"p":[]},{"i":"2|moderators|Модераторы","e":[2,3],"d":[],"_":[],"p":[1]},{"i":"3|administrators|Администраторы","e":[4],"d":[],"_":[],"p":[1,2]}],"c":{"r":{},"v":{"a":"packages","_":"id","t":"title","n":"name","r":["32|2|e_rights"]}}}]}


На выход можно получить следующее:
Таблица прав
Код:
INSERT INTO `rights` (`id`, `name`, `title`) VALUES (1, 'read_news', 'Чтение новостей');
INSERT INTO `rights` (`id`, `name`, `title`) VALUES (2, 'edit_news', 'Редактирование новостей');
INSERT INTO `rights` (`id`, `name`, `title`) VALUES (3, 'add_news', 'Добавление новостей');
INSERT INTO `rights` (`id`, `name`, `title`) VALUES (4, 'remove_news', 'Удаление новостей');
И таблица пакетов прав (или групп, кому как удобнее)
В e_rights перечислены все активные права пакета, включая права подпакетов

Код:
INSERT INTO `packages` (`id`, `name`, `title`, `e_rights`) VALUES (1, 'guests', 'Гости', 'read_news');
INSERT INTO `packages` (`id`, `name`, `title`, `e_rights`) VALUES (2, 'moderators', 'Модераторы', 'read_news,edit_news,add_news');
INSERT INTO `packages` (`id`, `name`, `title`, `e_rights`) VALUES (3, 'administrators', 'Администраторы', 'read_news,edit_news,add_news,remove_news');
Выгрузку можно настроить под свой проект (INSERT/UPDATE), возможно сохранение прав и пакетов в одной таблице. Также возможна выгрузка без ID. Каких-либо ограничений на количество прав и пакетов, а также вложенности пакетов не существует.

Сервис не требует регистрации, полностью бесплатен, данные на сервер не сохраняются.
Вот ссылка http://myrbac.com/constructor/
Ответить с цитированием