L!MP, вот смотри
у меня есть набор групп (файлы, книги, обои, и т.д)
и набор возможностей в каждой группе
(добавить, изменить, удалить, дополнить, одобрить)
мне надо как то организовать
а) интерфейс создания прав,
б) интерфейс привязки к урлам\модулям\чему угодно но достаточно надежному (т.е. избавить себя от условий типа if(acces_level()) в целом
в) интерфейс передачи и отнятия прав доступа
_________
что получается сейчас
(список прав находится в 1 функции куда я их добавляю вручную (заменить на чтение из файла\бд не сложно, но... это не решает главной задачи, привязка к тем или иным действиям на сайте)
интерфейс выдачи\отнятия прав (огромный листинг вида
| юзер | права |
|______|_______|
| юзер | права2|
|______|_______|
| юзер2| права |
|______|_______|
и есть в коде условие if(access...)
т.е все работает, но неудобно и не гибко
не нравится
файл будет маленький, три секции
юзер, админ, рут, в секциях описания действий с параметром 1 или 0
L!MP, мутно как то, может потому что не работал с фреймворками
dakilla (16.07.2012/10:30)
можно добавить колонку access допустим с массивчиком прав юзера потом где нить в начале достать их все от туда и непосредственно перед скриптом проверять есть ли у него ключик "wall"
if(!access_level
Не делайте так ни когда, не экономьте на кол-ве таблиц.
Вы заменяете выборку из таблицы на выборку из таблицы и парсинг строки.
Про сложную выборку можно будет сразу забыть
Koenig (16.07.2012/10:45)
файл будет маленький, три секции
юзер, админ, рут, в секциях описания действий с параметром 1 или 0
Это будут все те же уровни доступа от которых я хочу избавиться
И заменить их на выдаваемые права, на каждую конкретную точку отдельные (помните в винде доступ к файлам? Аналогично)
ramzes, а проверки на действие будут выглядеть так
if ($access['modyfy']) { ... }
думаю смысл понятен, ини парсер я у тебя видел, по умолчанию ставим юзер всем, у админа все единицы, у пользователя можно даже не копировать все, а просто проверять есть ли подобная строка в секции
ramzes, что мешает добавить новую секцию? или ты каждому пользователю хочешь разные права давать, в любом случае можно будет их группировать, даже если секции 10 будет, и то много я думаю
ramzes, вся проблема в том, что ты соотносишь правила к каждому конкретному юзеру. В резльтате получаем: кол.во юзеров * кол.во правил.
В варианте ролями, мы обьединяем множества юзеров в несколько ролей и сопоставляем правила уже с ролью юзера: кол.во ролей * кол.во правил.
Интерфейс добавления ролей очень прост: в таблицу User_Roles добавляем новую роль, с таблицы User_Rules собираем все уникальные экшины и записываем обратно помечая их идентификатором созданной роли и устанавливаем модификатор доступа как deny.
Koenig, но мне надо сотни точек с разными доступами для каждого..
грузить может один, модерировать 5 других, 7ой может и то и это и еще и удалять, 8ой вообще в другом месте модерирует другие обьекты, и т.д.
Koenig (16.07.2012/10:56)
даже если секции 10 будет, и то много я думаю
их больше 50 на самом деле
я пока что экономлю в надежде добиться управления на уровне интерфейса а не кода
по этому и тему создал