Перевожу сайт с конструкций типа
if(LEVEL==1){...}
на
if(access_level('wall')){...}
собственно разница в том что первый вариант это тупо админ, модер, юзер
второй же вариант по моему гораздо более гибкий, позволяющий назначить юзверя модератором не меняя его уровень (и соответственно не давая ему доступ туда где ему делать не чего), до бесконечности расширяемый, не влияя на ранее установленные возможности модерирования.
Вот думаю, на сколько оно оправдано (+1 запрос к бд, довольно большой список юзверей и доступных функций приводят к усложнению контроля(отьема) этих самых функций, ) и собственно как лучше организовать это технически, может кто то уже использовал такой подход, имеет опыт?
думал за такое, если вдс, можно создать группу и пользователя для данных операции, создать из под рута папку и дать группу и пользователя для этой папки, можно взять стандартного пользователя пхп или сервер, в пределах папки они и будут работать, не переживая за безопасность, можно сделать старшего пользователя, или даже рутом выставить права владельцев, это чисто по фс сервера, будут кнопки если даже, сделать с файлами ни чего не получиться
ты помоему делаешь тоже самое, только вид другой, все равно одно поле для контроля присутствует
ramzes, как вариант сделать ини файл и для каждой группы прописать функции, удобно редактировать и изменять
Koenig, не не, ты не понял, это не физический доступ, это замена таким понятиям как модер\админ на сайте (местным SV Smoder и т.д.)
ни каких доступов к файлам и прочего
ramzes, с ини файлом не вариант?
С RBACL никогда не работал?
Это, как раз то, что ты хочешь сделать.
L!MP, а поподробнее? не слышал даже
Koenig (16.07.2012/10:14)
ramzes, с ини файлом не вариант?
10к пользователей * 15-20 свойств
ни какой файл не справится, а тысячи файлов держать не вариант.
я как бэ реализовал, просто в бд ключи юзер - свойство
но вот гибкость меня смущает немного
при тех же 10к * 15 = су ма сойти как это контролировать
(некоторые свойства даются автоматически, за стабильную активность)
можно добавить колонку access допустим с массивчиком прав юзера потом где нить в начале достать их все от туда и непосредственно перед скриптом проверять есть ли у него ключик "wall"
if(!access_level('wall'))
exit('у вас нет прав здесь находится!!');
ramzes, Таблица Users содержит поле role_id - идентификатор роли юзера.
Таблица User_Roles содержит список возможных ролей (гость, юзер, модер, админ и т.д) и их описания.
Таблица User_Rules содержит вариации правил доступа для всех ролей: role_id, action_id, mode.
Использовать как то так:
if (ACL::deny('photo.add', $role_id)) {}