mailwolt/bootstrap/app.php

56 lines
2.2 KiB
PHP

<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Support\Facades\Route;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
api: __DIR__ . '/../routes/api.php',
channels: __DIR__ . '/../routes/channels.php',
commands: __DIR__ . '/../routes/console.php',
health: '/up',
using: function () {
// Webmail must be registered BEFORE web.php so its domain constraint
// takes priority over the catch-all Route::get('/') in web.php.
$wmHost = config('mailwolt.domain.webmail_host');
if ($wmHost) {
Route::middleware('web')
->domain($wmHost)
->name('ui.webmail.')
->group(base_path('routes/webmail.php'));
// Path-based fallback mit eigenem Namen-Prefix — kein Konflikt mit web.php 'login'
Route::middleware('web')
->prefix('webmail')
->name('webmail.')
->group(base_path('routes/webmail.php'));
} else {
Route::middleware('web')
->prefix('webmail')
->name('ui.webmail.')
->group(base_path('routes/webmail.php'));
}
Route::middleware('web')->group(base_path('routes/web.php'));
},
)
->withMiddleware(function (Middleware $middleware): void {
$middleware->trustProxies(at: '*');
$middleware->prependToGroup('web', \App\Http\Middleware\ValidateHost::class);
$middleware->alias([
'ensure.setup' => \App\Http\Middleware\EnsureSetupCompleted::class,
'signup.open' => \App\Http\Middleware\SignupOpen::class,
'auth.user' => \App\Http\Middleware\AuthenticatedMiddleware::class,
'guest.only' => \App\Http\Middleware\GuestOnlyMiddleware::class,
'role' => \App\Http\Middleware\RequireRole::class,
'require2fa' => \App\Http\Middleware\Require2FA::class,
]);
})
->withExceptions(function (Exceptions $exceptions): void {
//
})->create();