Перейти к основному содержимому

ADR-016. Пользователь не равен роли

Контекст

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

Решение

user — субъект входа и аудита, единственный на человека. role — назначаемый набор полномочий в определённом контексте. Связь — через user_role_assignment. Все проверки доступа идут через активные роли + actor_context.

Последствия

  • teacher, parent, admin не моделируются как разные типы пользователя;
  • любая проверка доступа использует роли + permissions + контекст;
  • audit фиксирует пользователя и его контекст, а не роль вместо пользователя.

Связи

  • relates: ADR-017, ADR-018