Как стать автором
Обновить

Комментарии 5

Поток сознания, но хотелось бы более глубокого освещения вопроса.
Дело в том, что я больше имел в виду «философия разработки», чем «bitrix». Поэтому, в принципе, верно — поток сознания.
Начинается этот мучительный процесс с выделения минимального набора независимых сущностей. Какие тут сущности или, говоря иначе, сколько типов данных?

Три типа данных: «объект», «операция над объектом», «право на операцию».

И тут же расширяете на активные и пассивные объекты. Вообще, если говорить о философии, то давно устоялись термины субъект (ваш активный объект) и объект (ваш пассивный объект).

А если говорить о разработке, то куда более интересным были бы рассуждения о том, где можно и где нужно размещать проверку наличия прав субъекта на действиями над объектами. С одной стороны, проверки должны проводиться в модели (в терминах MVC), так как только модель знает какие собственно действия она производит по инициативе субъекта, и не только над своими данными, но и выступая субъектом для других объектов, например каскадное удаление), но такая реализация повлечёт и чисто технические трудности (как-то нужно обеспечить передачу id субъекта по всей цепочки вызовов), и «идеологические» (нарушение принципа единственной ответственности, увеличение связанности и т. п.). С другой стороны, размещение проверки прав в контроллере нарушает такие «идеологические» принципы как инкапсуляцию модели (разработчик должен знать, что именно делает модель) и дает возможность разработчику просто забыть о проверке прав вообще или проверять их не все (например при удалении поста забыть проверить право на удаление комментов).
В мыслях у меня были допущения продолжить, но, если судить по голосам, то народу не очень интересно ощущать на себе поток сознания и слушать умозрительные рассуждения такого плана ) Наверное, зря добавил тег «bitrix».

Я не хотел перегружать текст разной терминологией.
В рамках MVC или не в рамках MVC, это уже конкретика. Надо рассматривать из каких элементов состоит информационная система, а затем прикидывать, как лучше строить проверку прав в ней.
Я бы планировал дальше поговорить о таких вещах, как «Роль» или «Профиль прав».

Да, я расширил объекты на активные и пассивные, но все-таки эти объекты одного типа. И ничего не мешает им в разных архитектурах действовать по-разному: в одной архитектуре объект может быть активным, а в другой — пассивным. Это скорее свойство типа данных.

Кстати, по причине тега «bitrix», получается, топик был перенесён в блог «Веб-разработка». На самом деле, я бы сюда его не совал
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации