Как лучше написать распределение прав между пользователями

Zt0

Новичок
Как лучше написать распределение прав между пользователями

Итак.
Есть 4 группы пользователей: Админ, Директор, Супервайзер и Манагер.
И есть такие права как чтение, удаление, редактирование, отчеты и тд.... И, естественно, у кого-то из пользователей больше прав, у кого-то меньше.
У каждой группы свой стандартный набор прав.. А меня сегодня попросили сделать, чтобы для каждого конкретного пользователя можно менять список этих прав, не смотря на его ранг.
Т.е. например убрать пару прав у директора, или добавить манагеру.
Вопрос - как это лучше реализовать, с учетом того, что в будущем могут добавиться еще какие-то права или же удалиться.

Пока что идея такая пришла: есть 5 checkbox'ов с названиями прав (имена чекбоксов, например, 0,1,2,3,4). Выделяем нужные, в базу сохраняется число типа "134" (выделено три чекбокса).
А дальше надо написать на странице эти права и ссылки на действия (например, удаление или изменение).
Может сделать массив типа:
$a=array("Изменить","Удалить".......);
и $b=array("edit.php","del.php"......);
И из него выбираем индексы, соответствующие номерам выбранных чекбоксов.
В итоге чтобы было: <a href=del.php>Удалить</a>

Имхо я намудрил и можно все это сделать легче... Тем более не учел изменение или удаление прав.
 

chillz

Guest
Прописывай права, например, через разделитель(";" ":" ".").
Потом разбивай explode()
А далее
if (in_array(...)) { ... }
 

Кром

Новичок
>Прописывай права, например, через разделитель(";" ":" ".").

Это так же нелепо ка и писать их без разделителя. Права нужно писать в отдельных строках.
 

Zt0

Новичок
Это так же нелепо ка и писать их без разделителя. Права нужно писать в отдельных строках.
а какая, собсна, разница?
Я так понимаю, мой вариант не самый ужасный? Или все-таки лучше по-другому делать?
 

my_php

Новичок
2Zt0:
Сделай еще одну таблицу с правами, которые можно добавлять и удалять. а к пользователю добавишь id-прав доступа.
 

chillz

Guest
Автор оригинала: Кром
>Прописывай права, например, через разделитель(";" ":" ".").

Это так же нелепо ка и писать их без разделителя. Права нужно писать в отдельных строках.
Криминал? Личная неприязнь к подобному методу? Или же возможные уязвимости?
 

Кром

Новичок
а какая, собсна, разница?
Я так понимаю, мой вариант не самый ужасный? Или все-таки лучше по-другому делать?
Твой вариан еще хуже чем предложенный.

>Выделяем нужные, в базу сохраняется число типа "134" (выделено три чекбокса).

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

Криминал? Личная неприязнь к подобному методу? Или же возможные уязвимости?
Знаешь, можно данные всего сайта сохранить в одном поле, через разделитель. Естественно, криминала в этом нет. Уязвимостей тоже. Остается "личная неприязнь", если тебя это устроит.
 

Said

Guest
> Выделяем нужные, в базу сохраняется число типа "134" (выделено три чекбокса).

вообще такие данные оч. удобно хранить в виде битовых полей

хотя в данном случае я бы попробовал прикрутить штуку на которую дал ссылку товарищ Popoff
 

Zt0

Новичок
Скорее всего сделаю через разделители.
А если прав больше чем десять, как ты будешь их записывать и различать?
Имел в виду такой метод, а не реализацию. Т.е. естественно я бы через разделитель писал, чтобы удобнее было.
 

master_x

Pitavale XXI wieku
Молодец, все правильно делаешь, сохраняй права в одном поле, разделяя их тем, что тебе нравится. Потом при входе в систему загружай проэкспложенные права в сессионные данный и в каждом инструменте проверяй, есть ли таковой в правах.
 
Сверху