Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Vingrad CMS > Система прав |
Автор: Opik 3.9.2006, 01:13 |
Читать тут: http://popoff.donetsk.ua/text/work/libs/passport/privilege/admin.html |
Автор: Wowa 3.9.2006, 01:51 | ||
Ох, как много текста ![]() ![]() Я на деле представляю себе такую систему. Есть таблица: ИД группы|ИД пользователя|привелегия 1||create_user 1||edit_user 2||edit_my_profil Сюда заносятся только разрешенные действия для группы или юзера. Всё, что не разрешено - запрещено. И есть функция для проверки:
Предлагаю так делать. |
Автор: Opik 3.9.2006, 02:01 |
Wowa, Ты как нить почитай, очень гибкая система. ИМХО Это стоит прочесть :) |
Автор: Wowa 3.9.2006, 02:03 |
Opik, а чем моя не гибкая? ![]() ![]() |
Автор: Opik 3.9.2006, 02:03 | ||
Wowa, Такой системой как ты предложил сложно сделать группы пользователей, а если пользователей в двух группах? трех? Там по ссылке есть хороший пример:
|
Автор: Wowa 3.9.2006, 02:19 |
Opik, сколько времени уйдет на организацию такой системы разграничения доступа? Действительно ли нам это нужно? |
Автор: Sardar 3.9.2006, 04:40 |
Opik, все свежие системты управления доступом основываються на ролях и уникальных привилегиях с точностью до одного пользователя. Я разработал(дорабатываю) похожую систему, но есть отличия (с начала):
Это основа, далее конкретный модуль может проверить:
Таким образом модуль для работы с юзерами и правами (да, фактически это модуль и его можно убрать физически отключив этот функционал, постовляеться вместе с основой) собирает всех пользователей в группы/контейнерый, при этом группы не имеют иерархии. Один юзер может находиться в нескольких группах, груп может быть сколько угодно. Пользователю можно выдать право на выполнение конкретного действия над пользователями в другой группе. Таким образом можно собрать людей в "топлы" и назначить им одного или более админов с точно разрешёнными действиями над этими юзерами. Модуль создаёт проверку: конкретное_право + конкретные_группы, где:
Как видм костяк расширяеться новыми связями по задаче. Естественно что такая гибкость означает тяжёлые запросы и возможно массу инфы доставаемой из БД. Естественно что при каждом запросе БД не трогаеться, для этого система контроля доступа плотно связана с кешированием (не удаляемый (только руками) модуль). При логине человек может подождать 1-5 секунд пока его инфа вся разберёться, затем в его персональный кешь/сессию сбрасываеться эта инфа в виде var_dump файлов и SQLite таблиц. Модули имеют почтовые ящики, куда другие модули могут посылать уведомления. Система контроля правами проверяет при каждом запросе изменились ли права, если надо, перестраивет кеш. Валидность по календарю, ИП и прочему естественно проверяеться из кеша. Отсюда приемлемая скорость работы. |
Автор: Opik 3.9.2006, 14:57 |
Wowa, Перефразирую твой вопрос: "Действительно ли нам нужна гибкая система?". Мое ИМХО - нужна. Sardar лишь это подтвердил |
Автор: Wowa 3.9.2006, 15:01 |
Opik, сколько времени у тебя уйдет на ее реализацию? |
Автор: Opik 3.9.2006, 15:25 |
Wowa, Ну начинать нужно все равно не с нее. Нужно для начала как минимум ядро системы. Я не знаю, что там в репозитариях сейчас. Нужно посмотреть. Ну если сесть, то пару дней наверно. сейчас конкретнее сказать не могу. |
Автор: Wowa 1.10.2006, 19:44 |
Кстати, предлагаю сделать возможным подключать базы юзеров сторонних движок для прохождение авторизации. Например так, чтобы пользователи форума Invision могли залогиниться на сайте с Vingrad CMS. (естественно при этом должен быть обеспечен доступ к таблице ibf_users). На мой взгляд это довольно легко реализовать, но польза будет колоссальная. |
Автор: Wowa 22.10.2006, 15:34 |
Опик с сегодняшнего дня в отпуске 41 день. Поэтому системой прав придеться заняться мне. |