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

Спрятать кнопку — не значит закрыть доступ

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

Правильно ограничение живёт на уровне данных: запрос физически не возвращает строки, к
которым у пользователя нет доступа. Тогда неважно, что он введёт в адресную строку.

При проектировании это почти ничего не стоит. Переделывать потом — значит трогать каждый
запрос в системе.

Что описывают заранее

Список ролей и для каждой два перечня: что доступно и что недоступно. Второй пишут реже, а
он ловит больше.

Правила видимости по структуре: точка видит свои продажи, управляющий — свою точку целиком,
региональный руководитель — свой регион, директор — всё. В реальной компании к этому всегда
есть исключения, и их надо вытащить на встрече, а не обнаружить после запуска.

Что происходит при переводе сотрудника между точками: видит ли он старые документы. Ответ
«да» и ответ «нет» одинаково законны, выбрать надо осознанно.

Проверка при приёмке

Вход под каждой ролью по очереди. Отдельно — попытка сделать то, чего роль делать не
должна: открыть чужой документ по прямой ссылке, выгрузить отчёт с закупочными ценами,
изменить данные другой точки.

Проверка занимает час и находит больше проблем, чем неделя тестирования обычных
сценариев.

Отключение доступа

Процедура отключения при увольнении должна быть в одном месте и занимать минуту. Иначе
учётные записи уволившихся живут в системе годами — и однажды кто-то ими воспользуется.

Читайте также: разработка программного обеспечения, программа для учёта, веб-приложения, личный кабинет, техническое задание.