ResolveActiveUnit.php 912 B

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\Auth;
  6. use Symfony\Component\HttpFoundation\Response;
  7. class ResolveActiveUnit
  8. {
  9. /**
  10. * Lê o header X-Unit-Id enviado pelo frontend, valida que a unidade
  11. * pertence ao usuário autenticado e disponibiliza como active_unit_id
  12. * na request para que os serviços possam usá-la ao filtrar dados.
  13. */
  14. public function handle(Request $request, Closure $next): Response
  15. {
  16. $unitId = $request->header('X-Unit-Id');
  17. if ($unitId && Auth::check()) {
  18. $user = Auth::user();
  19. $user->loadMissing('units');
  20. $validUnit = $user->units->firstWhere('id', (int) $unitId);
  21. if ($validUnit) {
  22. $request->merge(['active_unit_id' => $validUnit->id]);
  23. }
  24. }
  25. return $next($request);
  26. }
  27. }