![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| DeamonShan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 26.11.2005 Репутация: 3 Всего: 6 |
Есть ядро (самописный) он взаимодействует с модулями. Каждый модуль имеет конфигурацию (точнее должен иметь) для ограничений тех или иных действий пользователю, действия настраиваютс в админке.
Суть: Админ добавляет пользователя и выставляет права на те или иные действия. Например, если модуль добавления, редактирования и удаления товара, то у него должны быть соответсвующие настройки на эти действия (добавление, реддактирование, удаление), которые нужно как-то связать с пользователями. Добавление пользователя происходит в админке, и каждому пользователю посредством чекбоксов выставляются права на модули, список прав и действий добавляется при добавлении нового модуля. И собственно хотелось бы с вами посоветоваться, как лучше это дело организовать? Желательно, чтобы модуль устанавливался не через вдминку, а простым копированием файлов модулей. Мне главное понять суть и структуру этих действий. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Я представляю себе это так:
Для каждого пользователя есть массив, 'read'=> 0/1 'write=> 0/1 и тп. Как мы будем хранить этот массив, можно в одной ячейки через сериализацию в базу, а можно отдельные ячейки в базе... А можно просто создать должности, и создать функцию которая будет создавать массив прав в зависимости от должностей, будь то модератор, админ, пауер юзер, новичек, бывалый и тп И дальше в каждом методе смотрим на массив прав, и если он соответсвует правам , то выполняем, а нет так нет Можно что бы базу не грузить должность в сессии хранить Это сообщение отредактировал(а) Muerto - 6.9.2010, 15:15 |
|||
|
||||
| DeamonShan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 26.11.2005 Репутация: 3 Всего: 6 |
Muerto, никаких должностей и групп не будет.
Права доступа пользователям нужно указывать сразу при добавлении пользователя в систему. Массив с правами пользователя сериализировать и хранить в базе. Главное понять, как модули с этим связать... |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Ну или ручками в каждом методе
Или какой то общий контроллер, который будет смотреть по заданному списку методови прав которые к ним нужны, что этот пользователь может делать а что нет... |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
DeamonShan, Нужно делать операцию "установки модуля в систему" и "удаление модуля из системы".
Вероятнее всего - отдельные методы включаемого в систему модуля. Хотя отдельный файл для установки позволит немного сэкономить на коде. Эта операция будет модифицировать конфигурационные файлы. К примеру в списке прав пользователя, который должен храниться в файле конфигурации, могут быть добавлены-исключены некоторые значения. Для пущей скорости работы файл конфигурации можно генерировать как php файл , состоящий из комплекта массивов-констант. Значения туда можно сбрасывать var_export. Главное не делать это очень часто при добавлении нового комплекта прав нужно прописать устанавливаемые дефолтные значения для стандартных групп "Admins", "Users" и "Guests". -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| DeamonShan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 26.11.2005 Репутация: 3 Всего: 6 |
А в самом моддуле, if(){} -ми организовать эти ограничения? или как-то в клссами можно как то по другому, чтобы многократных ифофо не было?
|
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Тут, видимо, конфликт конкретных решений ;)
Интерфейс работы с правами можно делать примерно так
права не ограничены типом. могут быть логическими или строковыми. Строковые типы - выбор из списка значений. тогда в модуле (module_XXX) можно написать
префикс module_XXX. в начале имени права исключительно для того, чтобы не путаться в разномодульных read и write... вот эту строчку с индексом "права" - module_XXX.form должен знать сервис, который выводит форму редактирвоания списка прав. Ее должен знать сервис, который заведывает сохранением и восстановлением прав в базе данных. imho, проще портировать ее в общий конфигурационный файл. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |