Всем привет. Пожалуйста, помогите придумать, как все организовать.
Я хочу сделать несколько небольших проектов для одной компании:
1) простой лендинг, доступ открыт всем и случайным посетителям в том числе. Реализовать на простом php на бэке (загрузка картинок товаров и список точек продаж, которые то открываются, то закрываются, то переезжают) и jquery/чистый js на фронте для анимашек.
2) админка для этого лендинга. laravel + vue, доступ для контент-менеджера.
3) таблица актуальных ценников. laravel+vue, доступ для продавцов
4) админка для таблицы с ценниками. laravel + vue, доступ для бухгалтера
5) форма для инвентаризации товаров на точке. laravel+vue, доступ для продавцов
6) админка этой формы. laravel+vue, доступ для бухгалтера
ну и еще там планов громадье этих проектов и админок с ограниченным доступом для редактирования.
Так вот, собственно, как это все сделать правильно и по уму, чтобы все не смешалось в кучу? Использовать поддомены или подпапки?
site.ru/admin или admin.site.ru?
site.ru/prices, site.ru/wiki, site.ru/invent? Как потом сделать там админки? site.ru/prices/admin?
Выделить поддомен для сайта для продавцов sales.site.ru и там делать подпапки sales.site.ru/prices, sales.site.ru/wiki, sales.site.ru/invent, а админки вынести в поддомен admin.site.ru/landing, admin.site.ru/prices, admin.site.ru/wiki, admin.site.ru/invent?
Не думаю, что для лендинга нужен ларавель, его можно по-быстрому и так написать. Но тогда его надо делать отдельным проектом? И как тогда сделать, чтобы у лендинга и админки лендинга был доступ к одной папке с картинками (товаров и фото точек)? Или пусть и лендинг будет на ларавеле?
Какая должна быть структура у всего этого, чтобы это все было максимально модульно контейнировано?
Более-менее все представляю, что делать, когда представляю это как отдельные независимые приложения, для разных компаний, на разных доменах, с разными бд. Но как собрать это вместе и получить не взрыв на макаронной фабрике, а стену из лего-блоков?
С поддоменами лучше не связывайтесь, устанете настраивать ларавель под это дело.
У вас по идее тут одно ларавель приложение которое отвечает за всё, на уровне роутов раскидаете всё по контроллерам и далее внутри уже будете реализовывать логику.
Урлы лучше организовать по принципу вложенности, site.ru/admin, site.ru/prices
Админка одна на всех, в зависимости от ролей авторизованного пользователя показываете тот или иной функционал, городить отдельные админки не нужно
jazzus, Каким образом мы обходили тот момент что роут с именем login был у двух поддоменов? и то что ларавель не умеет работать с одинаковым наименованием роутов у разных поддоменов?
jazzus, В том что из коробки Auth::routes(); генерирует пакет роутов, в которых есть именованные роуты к примеру login, logout и др., и если их использовать внутри Route::domain('{account}.myapp.com')->group(function () {} то они не сгруппируются по домену, и возможны ситуации когда при переходе на роут 'login' будешь попадать на роут другого поддомена. И чтобы решить этот вопрос нужно будет отказаться от Auth::routes() и вручную прописывать ауф роуты. Но потом возникнет проблема при переходе по урлу который требует авторизации тебя также будет перекидывать на роут входа от другого домена. Вообщем чтобы всё это разрулить придется переопределить не один класс, и это ещё не всё на самом деле, есть ещё много не удобностей
Евгений Бухарев, это не неудобности, а базовые знания Ларавел. С кучей ответов в гугле. Как кастомизировать логин и убрать редирект написано в доках. Ты можешь использовать один пост роут с кастомным методом для аутентификации, а сами формы убрать в компоненты. Или разные роуты, а логику вынести в сервис. Я делал для домена новый файл роутов с настройками (домен, неймспейс, префикс и т.д.) в RouteServiceProvider. Прописать все это 5 минут. Это не какая-то адская проблема, а обычное программирование в пределах доков.
Евгений Бухарев, все эти вопросы не связаны с доменом. Настройки домена одна строчка. Прописываешь домен для роутов и все сразу работает. Все остальное к домену отношения не имеет. Вопросы роутинга, логина и логики нужно решать и без доменов.