139 lines
6.3 KiB
PHP
139 lines
6.3 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Support\Facades\Vite;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Domain-Konfiguration aus config/domains.php laden
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Die Domains werden dynamisch aus der Konfiguration geladen.
|
|
| In .env können die Live-Domains definiert werden:
|
|
|
|
|
| DOMAIN_PORTAL=portal.beispiel.de
|
|
| DOMAIN_B2IN=b2in.de
|
|
| DOMAIN_B2A=b2a.de
|
|
| DOMAIN_STILEIGENTUM=stileigentum.de
|
|
| DOMAIN_STYLE2OWN=style2own.de
|
|
|
|
|
*/
|
|
|
|
$domainPortal = config('domains.domain_portal', 'portal.b2in.test');
|
|
$domainB2in = config('domains.domain_b2in', 'b2in.test');
|
|
$domainB2a = config('domains.domain_b2a', 'b2a.test');
|
|
$domainStileigentum = config('domains.domain_stileigentum', 'stileigentum.test');
|
|
$domainStyle2own = config('domains.domain_style2own', 'style2own.test');
|
|
|
|
// Admin-Bereich (Portal)
|
|
Route::domain($domainPortal)->group(function () {
|
|
|
|
// Auth-Routen laden
|
|
require __DIR__.'/auth.php';
|
|
|
|
// Admin-Routes laden
|
|
require __DIR__.'/admin.php';
|
|
|
|
// Test-Route laden
|
|
require __DIR__.'/test.php';
|
|
|
|
// Display-API-Route (öffentlich zugänglich)
|
|
Route::get('/api/display/config', [\App\Http\Controllers\Api\DisplayConfigController::class, 'index']);
|
|
|
|
// Cabinet Info-Tablet API
|
|
Route::get('/api/cabinet-tablet/status', [\App\Http\Controllers\Api\CabinetTabletController::class, 'status']);
|
|
Route::get('/api/cabinet-tablet/check', [\App\Http\Controllers\Api\CabinetTabletController::class, 'check']);
|
|
|
|
// Display Version API (per physical display)
|
|
Route::get('/api/display/overview', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'overview']);
|
|
Route::get('/api/display/{display}/config', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'config']);
|
|
Route::get('/api/display/{display}/check', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'check']);
|
|
Route::get('/api/display/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'config']);
|
|
Route::get('/api/display/module/{module}/item/{item}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'configItem']);
|
|
Route::get('/api/display/module/{module}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'config']);
|
|
Route::get('/preview/module/{module}/item/{item}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'showItem']);
|
|
Route::get('/preview/module/{module}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'show']);
|
|
Route::get('/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'show']);
|
|
|
|
// FluxUI Asset-Routen explizit für Portal-Domain registrieren
|
|
// (Notwendig weil Route-Cache die globalen Flux-Routen nicht für alle Domains enthält)
|
|
Route::get('/flux/flux.js', [\Flux\AssetManager::class, 'fluxJs']);
|
|
Route::get('/flux/flux.min.js', [\Flux\AssetManager::class, 'fluxMinJs']);
|
|
Route::get('/flux/editor.css', [\Flux\AssetManager::class, 'editorCss']);
|
|
Route::get('/flux/editor.js', [\Flux\AssetManager::class, 'editorJs']);
|
|
Route::get('/flux/editor.min.js', [\Flux\AssetManager::class, 'editorMinJs']);
|
|
|
|
// Admin-Assets (Vite)
|
|
Vite::useBuildDirectory('build/portal');
|
|
});
|
|
|
|
// API-Routen für alle Domains (optional: auch dynamisch machen)
|
|
Route::domain(config('domains.domain_api', 'api.b2in.test'))->group(function () {
|
|
require __DIR__.'/api.php';
|
|
});
|
|
|
|
// Web-Routes für alle Themes (werden außerhalb der Domain-Gruppen geladen, um Duplikate zu vermeiden)
|
|
// Das Theme wird automatisch basierend auf der Domain vom ThemeServiceProvider ausgewählt
|
|
require __DIR__.'/web.php';
|
|
|
|
// Domain-spezifische Vite Build-Verzeichnisse
|
|
Route::domain($domainB2in)->group(function () {
|
|
Vite::useBuildDirectory('build/b2in');
|
|
});
|
|
|
|
Route::domain($domainB2a)->group(function () {
|
|
Vite::useBuildDirectory('build/b2a');
|
|
});
|
|
|
|
Route::domain($domainStileigentum)->group(function () {
|
|
Vite::useBuildDirectory('build/stileigentum');
|
|
});
|
|
|
|
Route::domain($domainStyle2own)->group(function () {
|
|
Vite::useBuildDirectory('build/style2own');
|
|
});
|
|
|
|
/*
|
|
// Theme 1 für landing1.test
|
|
Route::domain('landing1.test')->group(function () {
|
|
// Web-Routes laden
|
|
require __DIR__.'/web.php';
|
|
|
|
// Theme 1 Assets (Vite)
|
|
Vite::macro('themeCss', function () {
|
|
return $this->asset('resources/css/web/theme-landing1.css');
|
|
});
|
|
|
|
Vite::useBuildDirectory('build/web');
|
|
});
|
|
|
|
// Theme 2 für landing2.test
|
|
Route::domain('landing2.test')->group(function () {
|
|
// Web-Routes laden
|
|
require __DIR__.'/web.php';
|
|
|
|
// Theme 2 Assets (Vite)
|
|
Vite::macro('themeCss', function () {
|
|
return $this->asset('resources/css/web/theme-landing2.css');
|
|
});
|
|
|
|
Vite::useBuildDirectory('build/web');
|
|
});*/
|
|
|
|
// Fallback: Display-API für alle anderen Domains (z.B. localhost)
|
|
Route::get('/api/display/config', [\App\Http\Controllers\Api\DisplayConfigController::class, 'index']);
|
|
|
|
// Fallback: Cabinet Info-Tablet API
|
|
Route::get('/api/cabinet-tablet/status', [\App\Http\Controllers\Api\CabinetTabletController::class, 'status']);
|
|
Route::get('/api/cabinet-tablet/check', [\App\Http\Controllers\Api\CabinetTabletController::class, 'check']);
|
|
|
|
// Fallback: Display Version API
|
|
Route::get('/api/display/overview', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'overview']);
|
|
Route::get('/api/display/{display}/config', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'config']);
|
|
Route::get('/api/display/{display}/check', [\App\Http\Controllers\Api\DisplayVersionApiController::class, 'check']);
|
|
Route::get('/api/display/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'config']);
|
|
Route::get('/api/display/module/{module}/item/{item}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'configItem']);
|
|
Route::get('/api/display/module/{module}/preview', [\App\Http\Controllers\Api\ModulePreviewController::class, 'config']);
|
|
Route::get('/preview/module/{module}/item/{item}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'showItem']);
|
|
Route::get('/preview/module/{module}', [\App\Http\Controllers\Api\ModulePreviewController::class, 'show']);
|
|
Route::get('/preview/{token}', [\App\Http\Controllers\Api\DisplayPreviewController::class, 'show']);
|