Выдача прав в зависимости от ресурса в Asp.net core
при решении на взгляд не сложной задачи по выдачи прав, формулировка который звучит так: "Менеджер имеет права на чтение заказа только если он назначен на данный заказ".
Эту проблему я попытался решить с помощью своего сервиса разрешений PermissionService где определены методы проверки с подобной сигнатурой:
bool CanGetOrder(string userName, int orderId)
В данном методе на основе бизнес-правил я проверяю является ли пользователь userName менеджером, и назначен ли она на заказ.
Так же на странице msdn нашел данную статью которая описывает авторизацию на основе ресурсов. Я попытался использовать данный материал в решении задачи, но меня беспокоит что бизнес-правила, те самые проверки будут зависеть от фреймворка.
Бизнес-правил по выдаче прав может много, ролей в системе уже несколько, и каждое действие почти зависит от этих прав.
Например
"Менеджер может редактировать значения позиций заказа только если он назначен на заказ, и заказ в статусе Не оформлен"
Входе разработки эти правило будут изощряться и усложняться, и хотелось бы решить проблему, что бы в будущем было легче ее сопровождать.
В данных примерах я привел аналогии существующим.
Во время написание вопроса возникла идея совместить два способа, таким образом инвертировать зависимость.
Так же узнал про ABAC, которая может решить данные задачи, но я не смог найти его реализацию на asp.net core
Как данная задача решается в сложных системах?