![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| StreetPeople |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 7.7.2007 Репутация: 1 Всего: 1 |
Уважение кодерам!
Собираюсь напичатать админку для крупного корпоративного сайта. Есть 2-е таблицы - "Юзеры" и "Группы" (юзер относится к разным группам, в разных комбинациях в зависимости от прав доступа) ГРУППЫ: У каждой группы есть свои права на запись/чтение/изменение/удаление из таблиц Эти права выглядят следующим образом: R{[*]} // Права на чтение строк из всех таблиц W{[*]Exception{[6][7]}} // Права на запись строк из всех таблиц кроме таблиц с ID=6 и с ID=7 U{[*]Exception{[6][7]}} // Права на изменения строк из всех таблиц кроме таблиц с ID=6 и с ID=7 (PS: 6 и 7-ая таблицы и есть "Юзеры" и "Группы") D{[*]Exception{[6][7]}} // Права на удаление строк из всех таблиц с ID=6 и с ID=7 У каждой таблицы в БД есть свой уникальный номер, который, собственно и указывается в правах в рамках записи/чтения/изменения/удаления. ЮЗЕРЫ: У каждого юзера есть принадлежность к нескольким группам, группы перечиляются через запятую Помимо того у пользователя есть свои права более низкого уровня (права на ячейки таблиц): R{*[*]} // Пользователь имеет права на чтение всех ячеек из всех таблиц W{*[1,2,3,4,5]} // Пользователь имеет права на запись ячеек с ID=1,2,3,4,5 из всех таблиц U{*[1,2,3,4,5]} // Пользователь имеет права на изменения всех ячеек с ID=1,2,3,4,5 из всех таблиц D{5} // Пользователь имеет право на удаление любой строки из таблицы номер 5 ("товары") У каждой ячейки каждой таблице БД есть свой уникальный номер, который, собственно и указывается в правах, в рамках записи/чтения/изменения/удаления, юзера Итак! Каким образом я хочу устроить эту админку: После авторизации пользователя, я регулярным выражением буду доставать значения прав доступа для групп, юзеров и вносить их в определённый массив СЕССИИ. Кстати, как только пользователь заходит на сайт он сразу же получает права "Посетителя", у которого есть права только на чтение определённыйх ячеек определённых таблиц. Сайт полностью состоит из шаблонов, т.е. файлов с содержимым типа: "<html><head><title>{TITLE}</title>{CSS}{OCSS}{JS}{OJS}</head><body></body></html>" (поскольку приходится пользоваться регулярными выражениями, пришлось прикрутить класс кэширования страничек, его мы будем отключать в режиме "прав на зипись изменение или удаление"). Как я ужо говорил сайт использует шаблоны, и пути к этим шаблонам будут разными, в зависимости от прав пользователя. У каждого контентного элемента HTML есть свой id, "принадлежность к таблице" и пользователь двойным щелчком мышм активизирует "админский элемент" и может править этот элемент прямо в HTML после чего он нажимает комбинацию Ctrl+Enter и AJAX посылает всю нужную информацию на обработку (обработка, ясное дело, сначала смотрит на права доступа пользователя и если пользователь имеет права на "действие", изменяет элемент)... В общем такая вот лихая идея! (Если удасться её сделать, тогда нужно будет доработать - сделать менюшку "что можно сделать с элементом", которая будет появлються при правом клике мыши на "админском элементе") В этой системе очень много дыр(открытые имена таблиц, ID записей и т.п.)... Помимо того я незнаю каким образом делать шаблоны на комбинации групп(т.е. если создадут нового юзера, тогда для него нужно писать свой шаблон, который позволяет править только те элементы, которые он вправе править). Пипл, подскажите, насколько правильная эта идея, или я создаю колесо, причём овальное(не круглое). Какие минусы/проблемы вы видите? Как эти проблемы решить? PS: За отличные советы по теории и практике, могу выслать готовый вариант админки...) Это сообщение отредактировал(а) StreetPeople - 24.8.2007, 11:40 |
|||
|
||||
| anurbol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 30.5.2007 Где: Алматы, Казахстан Репутация: нет Всего: нет |
Мне кажется легче взять готовую opensource cms-ку, изучить архитектуру и переработать под свои нужды.
|
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Не, это небезопасно! Лучше делать на определенный символ каждой определенной ячейки определенных таблиц. ЗЫ. Воспользуйся поиском, ты много чего интересного по своей теме найдешь. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| ewolf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 15.8.2006 Где: г. Москва Репутация: 8 Всего: 18 |
Как в анекдоте про самолет: и теперь со всей этой фигней на борту мы попытаемся взлететь. По-сути. То, о чем ты пишешь, называется edit-in-place, т.е. редактирование контента непосредственно на самой странице. Идея не нова, она есть, например, в Joomla (как один из компонентов). Достоинства такого подхода - это мегакруто! Недостатки - а зачем все это надо? Количество дыр в системе будет зависеть от того, как ты ее реализуешь. От того, что пользователь узнает имя таблицы конец света сам по себе не наступит. Ссылаться на таблицы по номерам (вместо непосредственного имени таблицы) - мегажесть. Я бы не позавидовал тому, кому придется поддерживать такую систему. Ссылаться на номера ячеек в таблицах - еще большая мегажесть. Опять таки, почему нельзя ссылаться на имена? А если ячейки поменяются? Почему вообще настройка безопасности привязывается к такой низкоуровневой вещи, как "ячейки"? Почему нельзя просто ввести понятия "действия", на например "редактирование пользователя", "добавление статьи" и оперировать ими? В соотвествующие места просто добавить необходимые проверки на наличие прав на выполнение соотвествующего действия. Не усложняйте себе жизнь. Это сообщение отредактировал(а) ewolf - 27.8.2007, 00:43 |
|||
|
||||
![]()
|
| Правила форума "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. |