На каком уровне (Модель, Представление, Контроллер) MVC должна обрабатываться логика разрешений?
Позвольте мне немного прояснить это.
Очевидно, что пользовательский интерфейс (представление и контроллер) должен иметь возможность доступа к разрешениям для отображения / скрытия компонентов и для обработки сценария отказа в доступе. Также очевидно, что разрешения должны сохраняться для базы данных на уровне модели.
А как насчет "сложных" правил доступа, подобных этому?
В разрабатываемой мной системе вики / CMS каждый пользователь имеет набор разрешений для каждой страницы (просмотр, редактирование, переименование и т. Д.). Для существующих страниц эти разрешения извлекаются из базы данных. Предполагается, что для новой страницы у пользователя есть все возможные разрешения (при создании / редактировании).
Другим примером будет список страниц:
Текущий пользователь должен видеть только те страницы, на которые у него есть разрешение на просмотр, в списке страниц.
Должен ли контроллер обрабатывать эту логику? Или Контроллер должен отвечать только за вызов метода GetPermissions () (или GetPageList), и вся логика для его заполнения обрабатывается в Модели?