Skip to content

Авторизация

Аутентифицированный пользователь получает доступ к части функционала системы. Чтобы контролировать с какими именно частями системы пользователю можно взаимодействовать, вводится система ролей и разрешений.

Основное положение

Все пользователи групируются по ролям, а к каждой роли прикрепляется разрешения.

Таким образом:

  • Отдельному пользователю присваивается роль.
  • Отдельное разрешение присваивается одной или нескольким ролям.
  • Если пользователь аутентифицирован, система получает его роль, получает разрешения которые есть у этой роли и проверяет - есть ли в этом списке разрешение, которое необходимо для выполнения действий.

Изначально в системе есть только две роли:

  • user - имеет минимальные пользовательские права
  • superuser - имеет все права системы

Их нельзя удалить, им нельзя изменить имя. Даже имея все права системы.

По умолчанию, каждому пользователю при создании роли выдаеться минимальные пользовательские права.

Дополнительные роли

В систему добавляеться новые роли:

  • user_frozen - аутентифицированный пользователь системы, который был заморожен
  • user_blocked - аутентифицированный пользователь системы, который был заблокирован
  • admin - администратор системы у которого расширенный список разрешений

Роли и разрешеня в системе

Основная проблема с ролями и разрешениями в том, что их приходиться прописывать хардкорно и одновременно оставить изменяемыми сразу в нескольких местах системы (разработка и тестирование) и в разных пакетах системы (основное приложение, приложение для миграции и т.д.).

В любой системе должны быть прописаны:

  • Список основных, не удаляемых ролей
  • Список разрешений

Ограничения:

  • Добавление разрешений в базу производится перед обновлением приложений
  • Удаление разрешений из базы производится после обновления приложения
  • Удаление или добавление новых основных ролей в систему не производяться