Почему права доступа не должны быть таблицей с галочками

Когда я начал проектировать систему прав доступа, довольно быстро понял, что стандартный подход с огромной таблицей ролей и галочек мне не нравится.

Пока система маленькая, всё выглядит нормально. Есть несколько ролей, десяток разделов, поставил галочки и пошёл дальше.

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

Поэтому я решил попробовать другой подход.

Вместо списка разрешений пользователь видит фактически карту интерфейса системы. Можно открыть нужный раздел, увидеть вложенные элементы и прямо там указать, что человеку доступно, а что нет.

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

То есть администратор работает не с абстрактными названиями вроде “module.analytics.export”, а видит примерно то же самое, что потом увидит сам пользователь.

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

Конечно, интерфейс сам по себе ничего не защищает. Все ограничения дополнительно проверяются на сервере. Скрыть кнопку недостаточно, если запрос всё ещё можно отправить напрямую.

Но хороший интерфейс управления правами решает другую проблему: он позволяет человеку понимать, что именно он сейчас разрешает или запрещает.

И чем больше становится система, тем важнее это понимание.

Иногда хороший UX нужен не только обычному пользователю. Иногда он больше всего нужен администратору.

Почему права доступа не должны быть таблицей с галочками | Сетка — социальная сеть от hh.ru