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


Ответы (0 шт):