Я пишу веб-приложение с некоторыми требованиями ACL: пользователь может вносить изменения в некоторые элементы, некоторые элементы могут быть доступны для редактирования несколькими пользователями, администратор может редактировать что-либо, а менеджер может редактировать все в своей организации и т.д.
Я использую Play! каркаса и внешнего вида модуля Secure
, кажется, что место для решения вопросов авторизации находится в контроллерах. Однако мне кажется, что вопросы авторизации являются частью бизнес-логики и поэтому должны быть в модели. Кроме того, я начинаю видеть дублируемую логику в контроллерах, которые мне нужны для реорганизации.
С другой стороны, добавление авторизации к модели означает, что у меня должен быть некоторый способ получить текущего пользователя из модели, что кажется неправильным. В качестве альтернативы, я мог бы добавить параметр "current_user" для каждого метода модели, но это кажется еще хуже.
Итак, какова распространенная практика? Могу ли я поставить код авторизации в модель или сохранить ее в контроллере?