Вариант реализации распределения прав доступа

krafty

new Exception
Вариант реализации распределения прав доступа

Создаю систему распределения прав доступа к различным функциям и скриптам между группами пользователей.

Вот как я хочу это сделать:
В защищенном скрипте script.php включаем user.check.php (стартуется сессия, сверяються идентификаторы)
Потом включаем файл user.links.php, в котором из базы выбираются права, ссответсвующие данной группе пользователей и создается массив прав $role.
Далее идет проверка возможности запуска данного скрипта пользователем (каждому скрипту соответствует определенное право): if (in_array(1,$role) { }.
1 - это идентификатор права, которое позволяет запускать данный скрипт.
Потом функция show_links() в соответствии с массивом $role показывает необходимые ссылки.

Выскажите пожалуйста ваше мнение об этой схеме (уязвимости, гибкость, рациональность)
 

Popoff

popoff.donetsk.ua
Если я дам ссылку на описание своей системы, это будет считаться спамом или нет?

С какими системами ты уже знаком? :)
 

krafty

new Exception
со статьей на твоем сайте уже ознакомился и пришел к выводу, что описаная там система слишком "навороченная" для моей задачи. Хотя полезные для себя теоретические выдержки сделал. пробывал юзать phpGACL - не получилось поставить. Облазил потом весь Инет - натыкался только на отдельные ссылочки на топики забытых Богом форумов. Вобщем окончаетльный результат - решение сделать что-то свое. Базовой теории я уже поднабрался.

-~{}~ 27.09.05 20:03:

хочешь, для большего погружения в тему, могу дать краткое описание ТЗ.
 

Popoff

popoff.donetsk.ua
Эта система не может быть "слишком навороченной". Когда задача распределения привилегий не решается в полном объеме самой системой распределения приивлегий, то начинают ставить костыли в те системы, для которых это распределение привилегий предназначено. Но установка этих костылей требует времени, не слишком меньшего, чем то, что требуется для написания отдельной подсистемы управления привилегиями. И сами по себе эти костыли не решают проблему - в большинстве случаев я все равно не получаю ту гибкость, которую хотелось бы получить.

Тем более, что вся навороченность заключается в главном файле размером в 15 кб и во всяких редакторах, суммарным объемом 31 кб. Ох и навороченая система, ну просто жуть %)

Для тех, кто еще не в курсе, ссылку на всякий случай приведу:
http://popoff.donetsk.ua/text/work/libs/passport/privilege/admin.html
 

krafty

new Exception
под навороченностью я понимаю функции, которые не нужны мне. ну например иерархия, наследование. мне это пока не нужно! а объем исходного кода здесь не причем. все же ты мне советуешь воспользоваться твоей системой?
 

Popoff

popoff.donetsk.ua
ну например иерархия, наследование. мне это пока не нужно!
Обрати внимание на слово "пока". Не предусмотришь это сейчас - потом придется перелопачивать кучу кода, чтобы добавить такую возможность.
все же ты мне советуешь воспользоваться твоей системой?
нет, я советую избавиться от идеи "это слишком наворочено". в целом, не имеет значения, какой именно системой ты воспользуешься, чьей-либо готовой или своей собственной.
 

krafty

new Exception
ок. уже избавился. но все-таки буду делать свое. просто проект горит! времени нет разбираться в твоем коде.
 

kvf77

Red Devil
вот еще пример реализации прав:

http://php.russofile.ru/ru/translate/rights/phpgacl/
 

krafty

new Exception
kvf77
читал, понравилось, но не могу установить гакл, пишет
Warning: fetch(templates_c\%%C7^C7B^C7BBD6D2%%acl_admin.tpl.php): failed to open stream: No such file or directory in C:\localhost\www\html\phpGacl\admin\smarty\libs\Smarty.class.php on line 1251

Warning: fetch(): Failed opening 'templates_c\%%C7^C7B^C7BBD6D2%%acl_admin.tpl.php' for inclusion (include_path='d:\php;d:\php\includes') in C:\localhost\www\html\phpGacl\admin\smarty\libs\Smarty.class.php on line 1251

-~{}~ 28.09.05 18:12:

хотя скрипты эти есть
 

SiMM

Новичок
> хотя скрипты эти есть
Т.е. ты утверждаешь, что файл с названием templates_c\%%C7^C7B^C7BBD6D2%%acl_admin.tpl.php в нужном месте имеет место быть? Используй абсолютные пути.
 
Сверху