|
@@ -0,0 +1,36 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Http\Middleware;
|
|
|
+
|
|
|
+use Closure;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use Symfony\Component\HttpFoundation\Response;
|
|
|
+use App\Models\GlobalUser;
|
|
|
+
|
|
|
+class GetTenancyByUsername
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * Handle an incoming request.
|
|
|
+ *
|
|
|
+ * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
|
|
+ */
|
|
|
+ public function handle(Request $request, Closure $next): Response
|
|
|
+ {
|
|
|
+ $username = $request->input('username');
|
|
|
+
|
|
|
+ if (!$username) {
|
|
|
+ $username = $request->header('X-Username');
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($username && !$request->hasHeader('X-Tenant')) {
|
|
|
+ $user = GlobalUser::where('username', $username)->first();
|
|
|
+ if ($user) {
|
|
|
+ // 将租户 ID 添加到请求头 X-Tenant,交给 InitializeTenancyByRequestData::class 处理
|
|
|
+ $request->headers->set('X-Tenant', $user->tenant_id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $next($request);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|