Права пользователя на сайте

voland

Guest
Права пользователя на сайте

Допустим, Вам надо сделать на сайте авторизацию, при этом Вам надо разделить их права (например, как на этом форуме)
Поскольку обычно права выдаються из соображений, какие действия можно произвести с сайтом, то чем больше сайт, тем больше может быть вариаций.
Затрону сразу дизайн(чтобы понять, чего я хочу), я это себе представляю так:
При заходе в управление определенным пользователем, Вы видите кучу чекбоксов(отвечающих за то, что пользователь может делать).
1. Добавлять новости
2. Удалять новости
3. Редактировать новости
4. Производить поиск
5. Пользоваться корзиной
6. Удалять из корзины
и т.д.
Понятно, что все эти варианты могут между собой образовывать различные сочетания и пытаться ввести на каждый допустимый вариант какое-то число нелепо, тем более что добавка ещё одного действия увеличит кол-во чисел не на1, а гораздо большее кол-во вариантов!
В связи с этим мне бы хотелось узнать, как лучше всего реализовать данный механизм? Если что-то непонятно, Вы ткните пальцем что, попытаюсь донести мысль получше :)
 

saa

Guest
Если нужна супер универсальность, то можно реализовать механизм доступа подобный MySql. (обслуживать таблицу вида: - ресурс пользователь право1 право2 право3 и.т.д.)
 

voland

Guest
Естевственно в БД, как инчае я узнаю(запомню), что я натыкал? Меня интересует, не то, как хранить, что может, а как потом с этим работать?

-~{}~ 09.07.04 16:29:

Допустим есть на сайте ссылка!
Она видна только при том случае, если у человека например есть возможность "Добавить [что-то]"
Если учесть, что [что-то] - может быть например 5-6 вариантов
А дальше в зависимости от его дальнейших прав показывать на странице то-то или то-то, причем, это не обязательно разное содержимое, просто разные варианты работы с ним!
 

alpine

Новичок
voland
(imho) если у пользователя нет прав на что-то, то ему и не показывается это или к этому нельзя перейти, сделать не активным.
 

Кром

Новичок
>Меня интересует, не то, как хранить, что может, а как потом с этим работать?

Тебя интересует именно как с этим работать?
Например так:

if (SOME_ACCESS_GROUP == CheckPerm('test_link'))
{
?><a href="test.php">test</a><?

}
 

saa

Guest
Она видна только при том случае, если у человека например есть возможность "Добавить [что-то]"
Если учесть, что [что-то] - может быть например 5-6 вариантов
А дальше в зависимости от его дальнейших прав показывать на странице то-то или то-то, причем, это не обязательно разное содержимое, просто разные варианты работы с ним!
Не пойму про '[что-то]' - если можно реальный пример.

А работать можно делая выборки по таблице прав с заданным условием, и в зависимости от результата предоставлять [что-то] (читай ресурс) пользователю или нет.
 

voland

Guest
Эх... как бы объяснить... Я вот например думал, что все права пользователя можно хранить побитово, и после Кромовским примером производить побитовыйе проверки его прав. Но что-то мне в этом не нравиться! Что объяснить не могу, чувство нехорошее! Опять же, один иф хорошо, но если на странице находиться например 100 ссылок + из БД вынимаеться 200 полей и каждая ссылка, каждое поле БД показываеться(или с ним производиться какое-то действие) только при наличии определенных прав. Не умрет ли сайт от такого кол-ва проверок?

-~{}~ 09.07.04 16:45:

Добавлять новость
Добавлять картинку
Добавлять текст
Добавлять краткую новость
и т.д.
 

saa

Guest
Автор оригинала: voland
Опять же, один иф хорошо, но если на странице находиться например 100 ссылок + из БД вынимаеться 200 полей и каждая ссылка, каждое поле БД показываеться только при наличии определенных прав. Не умрет ли сайт от такого кол-ва проверок?
Зачем тебе иф? Делай выборку урлов. Проверку должен делать WHERE.
 

alpine

Новичок
voland
ты их не руками ж будешь выводить !?
так в чем проблема ?
 

voland

Guest
Как ты себе это представляешь?

-~{}~ 09.07.04 16:51:

Ссылки и поля вещт разные, я например понять не могу, причем тут WHERE? Чем он может мне помочь?
 

saa

Guest
ресурс:юзер:право_добавлять:право удалять

/addnews.php:user1:Y:Y
/addnews.php:user2:N:N
/addpicture.php:user1:N:Y
/addpicture.php:user2:Y:N
 

alpine

Новичок
voland
Предлагаю точно сформулировать требования!
А то не понятно, что ты защищаешь от пользоватебя без соотвествующих прав ...
Ты хочешь чтобы у тебя на странице выводились все ссылки на котрые права есть, а те на которые нету не выводились ?
Мне эта темя тоже интересна, только у меня еще и с шаблонами.
 

voland

Guest
Что-то я туплю... И где мне это писать/хранить/держать?
Что делать например с видимостью полей БД?
Одним я должен например показать картинку, а другим её стоимость? Третьим дать посмотреть превью и т.д.
 

voland

Guest
Вообщем есть база она достаточна большая в ней 7 таблиц в каждой из таблиц примерно 30-40 полей +в каждой около 50000 записей!
Я должен предоставить людям разные варианты работы с этой базой, причем их довольно таки много!
Кто-то может искать, кто-то нет! Кому-то видны все поля, кому то нет! Попробуйте представтье себе Базу Данных людей и все возможные с ней действия, дробя людей по их правам!
З.Ы. Сорри, пора с работы домой, в понедельник попробую объяснить все подробно!
 

saa

Guest
Ну в mysql все тоже самое в системе безопасности реализовано ктото может юзать определенную db - кто-то нет, кто-то может заходить с определенных адресов - кто-то нет.
И вообще реляционный принцип - рулит! Быстрее и логичнее сделать не получится, имхо.
 

Кром

Новичок
ресурс:юзер:право_добавлять:право удалять
>/addnews.php:user1:Y:Y

saa, а если тебе понадобиться расширить количество прав, ты будешь таблицы переделывать?
 

saa

Guest
Автор оригинала: Кром
ресурс:юзер:право_добавлять:право удалять
>/addnews.php:user1:Y:Y
saa, а если тебе понадобиться расширить количество прав, ты будешь таблицы переделывать?
Почему бы и нет? Я от тов. Каба научился вместо * в селекте указывать переменными имена полей. Только так и работаю. Поэтому могу в любой момент очередного редизайна БД не только добавить поля но и переименовывать их.
 

Кром

Новичок
Дело не в звездочке в select, а в том, что такая система годиться только для стабильных структур, а сайты в отличии от БД, к таким не относятся.
 

saa

Guest
Кром, вобщем то понял. Но ничего кроме таблиц в мою голову не лезет :) ... наверно нужно создать таблицу права и по ссылкам на нее определять есть ли у пользователя право. Соответственно нужна таблица ссылок и соотв. им пользователям. Полюбому грядут бешеные выборки...
 
Сверху