Комментарии 5
Поток сознания, но хотелось бы более глубокого освещения вопроса.
+2
Начинается этот мучительный процесс с выделения минимального набора независимых сущностей. Какие тут сущности или, говоря иначе, сколько типов данных?
Три типа данных: «объект», «операция над объектом», «право на операцию».
И тут же расширяете на активные и пассивные объекты. Вообще, если говорить о философии, то давно устоялись термины субъект (ваш активный объект) и объект (ваш пассивный объект).
А если говорить о разработке, то куда более интересным были бы рассуждения о том, где можно и где нужно размещать проверку наличия прав субъекта на действиями над объектами. С одной стороны, проверки должны проводиться в модели (в терминах MVC), так как только модель знает какие собственно действия она производит по инициативе субъекта, и не только над своими данными, но и выступая субъектом для других объектов, например каскадное удаление), но такая реализация повлечёт и чисто технические трудности (как-то нужно обеспечить передачу id субъекта по всей цепочки вызовов), и «идеологические» (нарушение принципа единственной ответственности, увеличение связанности и т. п.). С другой стороны, размещение проверки прав в контроллере нарушает такие «идеологические» принципы как инкапсуляцию модели (разработчик должен знать, что именно делает модель) и дает возможность разработчику просто забыть о проверке прав вообще или проверять их не все (например при удалении поста забыть проверить право на удаление комментов).
+1
В мыслях у меня были допущения продолжить, но, если судить по голосам, то народу не очень интересно ощущать на себе поток сознания и слушать умозрительные рассуждения такого плана ) Наверное, зря добавил тег «bitrix».
Я не хотел перегружать текст разной терминологией.
В рамках MVC или не в рамках MVC, это уже конкретика. Надо рассматривать из каких элементов состоит информационная система, а затем прикидывать, как лучше строить проверку прав в ней.
Я бы планировал дальше поговорить о таких вещах, как «Роль» или «Профиль прав».
Да, я расширил объекты на активные и пассивные, но все-таки эти объекты одного типа. И ничего не мешает им в разных архитектурах действовать по-разному: в одной архитектуре объект может быть активным, а в другой — пассивным. Это скорее свойство типа данных.
Я не хотел перегружать текст разной терминологией.
В рамках MVC или не в рамках MVC, это уже конкретика. Надо рассматривать из каких элементов состоит информационная система, а затем прикидывать, как лучше строить проверку прав в ней.
Я бы планировал дальше поговорить о таких вещах, как «Роль» или «Профиль прав».
Да, я расширил объекты на активные и пассивные, но все-таки эти объекты одного типа. И ничего не мешает им в разных архитектурах действовать по-разному: в одной архитектуре объект может быть активным, а в другой — пассивным. Это скорее свойство типа данных.
0
Кстати, по причине тега «bitrix», получается, топик был перенесён в блог «Веб-разработка». На самом деле, я бы сюда его не совал
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Права пользователей в информационных системах через призму CMS Bitrix