Права доступа и роли
noff 22.11.2005 17:27
Нужно сделать систему, которая проверяя, разрешено ли исполнение конкретного действия пользователю или нет, соответственно исполняет его или нет. Это называется - роли.
Вообще я себе это так представляю.
Есть какой-то большой набор действий:
1. Добавить товар
2. Просмотреть товар
3. Удалить товар
4. Положить в корзину
5. Создать категорию
6. Переименовать категорию
7. Изменить информацию о товаре
8. Удалить категорию
9. Посмотреть статистику
...
...
...
58. Создать пользователя
(их может быть хоть 300)
Создается роль "Главный администратор", которому разрешается:
58. Создать пользователя
57. Редактировать пользователя
56. Создать группу пользователей
(допустим, хватит)
Первому пользователю присваивается роль "Главный администратор". Он создает все категории, пользователей и группы пользователей. Еще может создавать роли методом проставления галочек напротив нужных доступов (эти 58 пукнтиков).
Например, главный администратор создает роль "Менеджер", который может:
1. Добавить товар
2. Просмотреть товар
3. Удалить товар
7. Изменить информацию о товаре
Потом создает штук двадцать менеджеров, и чтобы каждому не тыкать галочки, он каждому просто указывает роль "Менеджер". Эти двадцать человек могут работать с товарами.
Потом создает группу "Покупатели". Там проставляет:
2. Просмотреть товар
4. Положить в корзину
И т.д. Т.е. создаются так называемы группы доступа для каждого типа зарегистрированных пользователей.
Количество доступов (пунктиков с цифрами) может меняться со временем.
Например, нам приспичило создать "Младшего менеджера", который не может делать пункт 3 (удалить товар), присваиваем ему соответствующую роль и все. В процессе работы программа сверяет есть ли у пользователя право исполнять соответствующий пунктик (например, пункт 38) или нет. Если нет - не дает. Если есть - дает.
Лично я себе пока так это представляю. Если у кого есть другие предложения - объясните, пожалуйста.
ПС: метод, который описал PAF (
http://www.parser.ru/forum/?id=47126), я просто не понял. Недорос еще.