LMIV-SNACKAUTOMAT/app/Http/Middleware/TenantMiddleware.php

46 lines
1.1 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class TenantMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$user = Auth::user();
if (!$user) {
return redirect()->route('login');
}
// Super-Admin kann auf alles zugreifen
if ($user->isSuperAdmin()) {
return $next($request);
}
// Prüfe ob Benutzer zu einem Mandanten gehört
if (!$user->tenant_id) {
abort(403, 'Benutzer ist keinem Mandanten zugeordnet.');
}
// Prüfe ob Mandant aktiv ist
if (!$user->tenant->is_active) {
abort(403, 'Mandant ist nicht aktiv.');
}
// Setze Mandanten-Kontext in Session
session(['current_tenant_id' => $user->tenant_id]);
return $next($request);
}
}