Авторизация
Аутентифицированный пользователь получает доступ к части функционала системы. Чтобы контролировать с какими именно частями системы пользователю можно взаимодействовать, вводится система ролей и разрешений.
Основное положение
Все пользователи групируются по ролям, а к каждой роли прикрепляется разрешения.
Таким образом:
- Отдельному пользователю присваивается роль.
- Отдельное разрешение присваивается одной или нескольким ролям.
- Если пользователь аутентифицирован, система получает его роль, получает разрешения которые есть у этой роли и проверяет - есть ли в этом списке разрешение, которое необходимо для выполнения действий.
Изначально в системе есть только две роли:
user
- имеет минимальные пользовательские праваsuperuser
- имеет все права системы
Их нельзя удалить, им нельзя изменить имя. Даже имея все права системы.
По умолчанию, каждому пользователю при создании роли выдаеться минимальные пользовательские права.
Дополнительные роли
В систему добавляеться новые роли:
user_frozen
- аутентифицированный пользователь системы, который был замороженuser_blocked
- аутентифицированный пользователь системы, который был заблокированadmin
- администратор системы у которого расширенный список разрешений
Роли и разрешеня в системе
Основная проблема с ролями и разрешениями в том, что их приходиться прописывать хардкорно и одновременно оставить изменяемыми сразу в нескольких местах системы (разработка и тестирование) и в разных пакетах системы (основное приложение, приложение для миграции и т.д.).
В любой системе должны быть прописаны:
- Список основных, не удаляемых ролей
- Список разрешений
Ограничения:
- Добавление разрешений в базу производится перед обновлением приложений
- Удаление разрешений из базы производится после обновления приложения
- Удаление или добавление новых основных ролей в систему не производяться