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();