GetTenancyByUsername.php 972 B

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Illuminate\Http\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use App\Models\GlobalUser;
  7. class GetTenancyByUsername
  8. {
  9. /**
  10. * Handle an incoming request.
  11. *
  12. * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
  13. */
  14. public function handle(Request $request, Closure $next): Response
  15. {
  16. $username = $request->input('username');
  17. if (!$username) {
  18. $username = $request->header('X-Username');
  19. }
  20. if ($username && !$request->hasHeader('X-Tenant')) {
  21. $user = GlobalUser::where('username', $username)->first();
  22. if ($user) {
  23. // 将租户 ID 添加到请求头 X-Tenant,交给 InitializeTenancyByRequestData::class 处理
  24. $request->headers->set('X-Tenant', $user->tenant_id);
  25. }
  26. }
  27. return $next($request);
  28. }
  29. }