Laravel: Роутинг и разделение на категории
не могу правильно решить проблему с роутингом в Laravel и использованием несколько доменов. В чем суть. У нас есть домен example.com и в laravel мы изначально о нем не знаем, доменов может быть бесконечно много и все разных типов. Тип задаётся в базе данных.
Я реализовал подобное решение на nodejs
// Получение данных о проекте
app.use(function(req, res, next) {
// Данные о проекте
req.project = {
type: 'bill'
};
next();
});
// Получаем все роутинги
import { Bill, Store } from './routes/index.js';
app.use('/', [Bill, Store]);
~bill.js
app.use(function(req, res, next) {
if(req.project.type !== type) return next('router');
return next();
});
Т.е я проверяю тип проекта например в базе данных, при заходе по адресу / он начнет проверять middleware и если он не совпадает то просто выходит из данного роутинга.
В Laravel Middleware работает только на маршрут и если он ошибочный, выйти мы не можем.
Route::domain (мы указать не можем как не знаем домен, если укажем просто {domain}) Данное действие будет всегда отдавать 404 not found т.к подобное работает только на поддомены.
Я реализовал подобное решение в RouteServiceProvider
$domain = Domain::where('domain', request()->getHost())->first();
if($domain->project->type == "bill") Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/bill.php'));
и в зависимости от типа подключаю файл роутинга, например web.php или же bill.php
Все хорошо работает, но я понимаю что это костыль и мы в этом убеждаемся если используем php artisan route:cache который кеширует домен как localhost и при заходе мы всегда получаем сайт без категории по домену localhost а не нашему домену.
И тут варианты, не использовать кеширование, найти решение данной проблемы на Laravel, продолжать разработку на NodeJS