Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как правильно организовать модульную структуру с возможностью ограничениям прав доступа
 
 автор: web777   (10.01.2009 в 11:22)   письмо автору
 
 

Решил переписать скрипт и сделать его модульной системой, и сделать достаточно простым, чтобы любые модули могли подключатся легко, просто кидая папку модуля в директорию modules/ и скрипт его мог сам определить и занести в базу данных в отдельную таблицу(пока не знаю нужна ли таблица в БД) где каждый модуль будет прописан из директории, через админ-панель можно галочками активировать/деактивировать. Каждый модуль будет иметь файл модуль.info где будет описана вся информация модуля, тоесть название модуля,описание,версия(прислучаи) мож ещё что нить.

Как вы считаете, правильна организация модульной системы?

Сейчас правда придвижу опасения с разграничениями прав доступа пользователей к модулям, и не могу придумать как лучше сделать, ведь модули будут сами по себе, также будет отдельным модулем управление пользователями(регистрация,авторизация,группа). Админом будет создаваться группы, и поскольку входящий в модуль "управления пользователями" - Группы, не может сразу знать какие модули будут, и какие права должны быть, что заранее не сделать. Чтобы можно было выставлять права к будущим подключаемым модулям, при этом не править код для Группы под определённый модуль.

С этим я столкнулся в первые, поэтому решил спросить помощи у знающих, может я что-то не правильно делаю, возможно правильно както подругому можно было сделать поздскажите?

сейчас в голову пришла такая мысль, что если в таблице Group, создать отдельное поле, где будет через запятую прописываться название(по директориям) модули, которые будут доступны пользователю. Тоесть если название модуля будет прописано в данной группе, то пользователь будет иметь доступ к данному модулю, как вы думаете, правильный вариант?
только ещё нужно подумать ведь прав может быть несколько у каждого модуля, к примеру просмотр,редактирование,удаление. Возможно нужно будеть предоставить доступ к некоторым модулям только просмотр, но без редактирования, а кому-то и просмотр и редактирование, про удаление думаю не стоит делать отдельно, если пользователь будет иметь доступ к редактированию то он должен и иметь доступ к удалению, поэтому лучше сделать их единым(редактирование и удаление). Тогда встаёт такой вариант, также записывать с одельное поле в таблице Group только сделать в две строки, где на перовй строке прописываются модули через запятую для доступа к просмотру, а на второй строке прописываются модули для редактирования и удаления. Примерно так

view:news,catalog,comment
edit:news,catalog,comment

в начале view: и edit: можно и ен писать я тут чтобы было понятно.

вот собственно как я придумал, хотелось бы у вас узнать мнение, правильный такой вариант?

  Ответить  
 
 автор: OpenWindow   (10.01.2009 в 11:32)   письмо автору
 
   для: web777   (10.01.2009 в 11:22)
 

Лучше разграничить все файлы, я считаю.
modules\ в ней папка description\ в ней 3 файла: название, описание, иконка... Ну, и так дальше...

  Ответить  
 
 автор: web777   (10.01.2009 в 11:43)   письмо автору
 
   для: OpenWindow   (10.01.2009 в 11:32)
 

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

  Ответить  
 
 автор: web777   (10.01.2009 в 12:16)   письмо автору
 
   для: web777   (10.01.2009 в 11:43)
 

у кого нить есть какие нить мысли пол поводу этого, варианты?

  Ответить  
 
 автор: mikha   (10.01.2009 в 13:24)   письмо автору
 
   для: web777   (10.01.2009 в 11:22)
 

Я делаю так, группы в каждом модуле свои.
Всё это в базе данных. Префикс_название_модуля_Group.
1 - админ. 5 - не авторизированые, 4 - обыкновенные авторизированые посетители.
Ну а дальше простор для фантазии, максимум различных прав, создаёшь группу, даёшь ей комбинацию прав, обзываешь как нибуть, вуаля..
Примерная структура. ID группы, ID членов группы через запятую, название группы, значёк группы, далее всякие разные права.
На самом деле получается довольно не объёмно. ID не авторизированых ведь не надо писать так же как и ID обыкновенных посетителей. Только модеров, журналистов, главных редакторов или что там ещё..
По идее можно и в файл писать, но мне как то больше MySQL по кайфу.

  Ответить  
 
 автор: web777   (10.01.2009 в 13:54)   письмо автору
 
   для: mikha   (10.01.2009 в 13:24)
 

ну я тоже склоняюсь к БД, так удобнее на много. Но в вашем варианте мне кажется единственное не удобно что у каждого своя таблица разграничений прав. Таблиц будет столько сколько и модулей.

Я тут сидел, и придумал что можно реализовать так, сканировать всю директорию модуля modules/ и заганяем в БД в таблицу group все названия директорий модулей, далее уже работать с ними.

Также можно в таблице group создать доп. поле act в котором будет хранится значение 1 или 0 тоесть активирован модуль или деактивирован. Далее при создании или редактировании группы, выводить все активированые модули из таблицы group, и над каждым подставлять галочки видеть,редактировать для выбора.

Зарегистрированному пользователю присваивать группу.
Авторизованный пользователь имеет user_id=1 не авторизованный user_id=0
При посещении пользователем модуля, смотрим по ID пользователя группу, выбираем её, и сверяем имеется ли доступ к данному модулю или нет. Выше я уже написал, если у выбранной группы в отдельном поле прописан о имя модуля, то пускаем пользователя если нет то нет.

  Ответить  
 
 автор: mikha   (10.01.2009 в 14:22)   письмо автору
 
   для: web777   (10.01.2009 в 13:54)
 

Завтра, на свежую голову подумаю и отпишусь.
Пока лишь скажу что под модулями я подразумеваю новости, форум, фотогалерею и т.д.
А не мелочёвку типа Списка кто онлайн, календарь и т.д.
Т.е то в чём невозможно находится одновременно. И разумеется нет необходимости грузить все права подряд. Только те что необходимо.

  Ответить  
 
 автор: web777   (10.01.2009 в 14:24)   письмо автору
 
   для: mikha   (10.01.2009 в 14:22)
 

ага я тоже завтра посмотрю, а то уже в ночь наработу идти

но я вообще не расчитывал на мелкие модули как и вы, а планировал типа атвокаталог, новости, обзоры, статьи, интернет магазин

  Ответить  
 
 автор: web777   (11.01.2009 в 16:09)   письмо автору
 
   для: web777   (10.01.2009 в 11:22)
 

вообще было бы интересно узнать про новые возможности, может кто-то сам делал или разбирал какие нибудь скрипты и видел как реализована модульная система с возможностью разграничения прав для пользователей, делитесь советами :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования