Многоуровневый доступ...

Astral Man

We Will Rock You
Многоуровневый доступ...

Всем привет!

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

Есть неколько модулей, и много пользователей, нужо каждому пользователю дать права на доступ к определенным модулям.
Допустим для админа все модули, для юзера1 1,3,7 модули, а для юзера2 1,2,4,6,10 модули.
 

Demiurg

Guest
где у тебя храниться вся информация ? в БД ?
 

Astral Man

We Will Rock You
Demiurg Да, инфа по модулям (id_mod, name_mod, mod(реальное название модуля на eng)) и по пользователя хранитьсяв БД MySQL.
 

IntenT

SkyDiver
Astral Man
Если есть группы пользователей - то можно раздавать права используя группы.
Таблица связей с полями id_user_group, id_mod, priveleges

Если групп нет - то такая-же таблица но для связи модулей с пользователями id_user, id_mod, priveleges
 

Astral Man

We Will Rock You
IntenT Групп пользователь нет. Для каждого пользователя могут быть разые права.
В таблице user есть поле access_mod туда записываем права.. но как это лучше сделать?
У каждого модуля есть id начинается с 1 и едет с интервалом "1" т.е. порядковый номер. В access_mod можно записывать 0100110011 0-нет доступа 1-есть, смотреть ид модуля и считывать цифирку в позиции равной ид модуля.
 

Demiurg

Guest
Astral Man
почитай ссылку, которую тебе дали, там все подробно описывается.
 

IntenT

SkyDiver
Astral Man
ТОесть хранить права в строке в отдельном поле у каждого пользователя???
Хочется геморою - делай
Все чего ты добьешься - зубной боли с определением прав, разбором строки, и недобством внесения изменений
 

Demiurg

Guest
>Уже читаю
вот прочитай, потом задавай вопросы по тому, что не понятно.
 

IntenT

SkyDiver
Astral Man
Я бы сделал так, как я написал.
Создаешь таблицу с 3 полями:
id_user, id_mod, priveleges
В первом - ид юзера.
во втором - ид модуля
в третьем - флаг определенной привелегии юзера на данный модуль.
Если флаг есть - то пользователь имеет право что-то с модулем делать.
Напимер - есть пользователь юзер1 с ид=1
Есть модуль новости с ид=4.
На модуль у пользователя в принципе могут быть такие права:
ВКЛЮЧИТЬ=1
ВЫКЛЮЧИТЬ=2
НАПИСАТЬ НОВОСТЬ=3
УДАЛИТЬ НОВОСТЬ=4
ОПУБЛИКОВАТЬ НОВОСТЬ=5

id_user | id_mod | priveleges
1 | 4 | 3
1 | 4 | 4
1 | 4 | 5

Эта таблица говорит, что пользователь 1 имеет права на модуль НОВОСТИ: Написать новость, удалить новость, опубликовать новость

Так понятно?
 

Astral Man

We Will Rock You
IntenT Значит при каждом действии пользователя надо проверять доступ. А не много заросов к БД получается?
 

Demiurg

Guest
IntenT
странные у тебя модули.
получается что каждый модуль может вешать новости ?
 

Demiurg

Guest
Astral Man
смотря, что ты называешь модулем. если это файл, то один запрос на каждый файл - не много.
 

Astral Man

We Will Rock You
Demiurg
Модуль это отдельный файл который инклудится при определенном действии, на пример нажатием на ссылку..

Также при логине пользователя в меню должны выводиться ссылки на модули которые разрешены этом пользователю.
 

IntenT

SkyDiver
Demiurg
Читаем внимательно.
ВЕшать новости может только один модуль - новости.
Дать такую команду модулю может только тот юзер, который имеет соотв. права

Astral Man
Значит при каждом действии пользователя надо проверять доступ
А ты как думал???
 

Demiurg

Guest
Таким образом информация о модуле заложана в ядре системы ?
 

IntenT

SkyDiver
Demiurg
Перечень установленных модулей ядру знать не помешает.
ПРоверка специфических прав - это дело модуля
 
Сверху