Это решение является балансом. Лучший ответ зависит от того, КАК РАЗНЫЕ функциональные возможности и разрешения между двумя типами пользователей. Если ваш сайт очень сложный, вам будет легче писать, поддерживать и тестировать код в отдельных приложениях. Если есть только несколько небольших отличий, вы предпочитаете поддерживать простоту только одного приложения.
Например, в нашей системе у нас есть собственные системные администраторы, которым разрешено делать и видеть гораздо больше, чем клиентские «администраторы». Пользователи-пользователи имеют разные уровни разрешений, при этом их уровень администратора самый высокий. Однако даже те клиенты не могут получить доступ к любому нашему бэкэнду, который имеет многочисленные модули, которые они не могут видеть, и совершенно разные наборы форм. Мы даже запускаем эти приложения на разных виртуальных именах хостов, даже если они находятся в одном проекте Symfony.
Наличие отдельных приложений, подобных этому, позволяет вам легче убедиться в правильности защиты, не давая клиентам полностью работать с бэкэндом и всеми его модулями. У нас есть несколько модулей, которые похожи на бэкэнд и внешний интерфейс, но на стороне клиента должно быть гораздо больше пользовательских ограничений на то, какие записи и поля они могут просматривать / редактировать, чтобы они не попадали в данные других клиентов.
Если бы мы попытались смешать все эти ограничения клиентов с нашими супер-привилегированными возможностями, у нас был бы кошмар сложных условных выражений и запросов, и было бы слишком легко совершать ошибки и предоставлять клиентам доступ, к которому они не должны есть.