ResolvesActiveUnit.php 804 B

12345678910111213141516171819202122232425262728
  1. <?php
  2. namespace App\Http\Controllers\Concerns;
  3. use App\Models\User;
  4. use Illuminate\Support\Facades\Auth;
  5. /**
  6. * Fornece um helper para obter o ID da unidade ativa da request.
  7. *
  8. * O middleware ResolveActiveUnit valida o header X-Unit-Id e injeta
  9. * 'active_unit_id' na request quando o usuário possui múltiplas unidades
  10. * e selecionou uma específica no frontend.
  11. * Se nenhuma unidade estiver selecionada, retorna a primeira unidade do usuário.
  12. */
  13. trait ResolvesActiveUnit
  14. {
  15. protected function activeUnitId(?User $user = null): ?int
  16. {
  17. $fromRequest = request()->input('active_unit_id');
  18. if ($fromRequest) {
  19. return (int) $fromRequest;
  20. }
  21. $user = $user ?? Auth::user()?->loadMissing('units');
  22. return $user?->units->first()?->id;
  23. }
  24. }