Как разбить код при множестве ролей в Laravel?
У меня есть 6 ролей и все они имеют отношение к одной сущности - заявки (таблица applications). Сначала 1 роль создаёт завку, потом 2 роль проверяет, потом эту заявку проверяет 3 роль, утверждает 4, ... 6 может просматривать. У каждой роль своя задача.
Сперва я сделал по контроллеру на роль, потом решил разделить. И проверка ролей происходит в маршрутах. Теперь, думаю, нужно всё объединить в один контроллер и внутри метода контроллера (классический ресурс контроллер) проверять роли и раскидать все обработки по сервисам, чтоб контроллер не был слишком объемным.
Что будет лучше в моём положении? Есть ли у кого-нибудь опыт в подобном? Может быть не сервисы использовать, а как-то иначе разбить код? И учитывать, что могут появиться еще роли.
Уточню. Вопрос не в том, как распределять задачи по ролям и опознавать, а в том как написать читаемый, легкорасширяемый код.
Проблемы:
- Если на роль по контроллеру,то слишком много контроллеров.
- Если все роли в один контроллер, то слишком толстый контроллер, который можно раскидать по сервисам или по другим.
Мне интересен опыт тех, кто уже сталкивался с подобным.