isMethod('post') && $request->routeIs('api.v1.tenant.events.store')) { $tenant = $this->resolveTenant($request); if ($tenant->event_credits_balance < 1) { return response()->json(['message' => 'Insufficient event credits'], 422); } $request->merge(['tenant' => $tenant]); } elseif (($request->isMethod('put') || $request->isMethod('patch')) && $request->routeIs('api.v1.tenant.events.update')) { $eventSlug = $request->route('event'); $event = Event::where('slug', $eventSlug)->firstOrFail(); $tenant = $event->tenant; $request->merge(['tenant' => $tenant]); } return $next($request); } private function resolveTenant(Request $request): Tenant { $user = $request->user(); if ($user && isset($user->tenant) && $user->tenant instanceof Tenant) { return $user->tenant; } $tenantId = $request->attributes->get('tenant_id'); if (! $tenantId && $user && isset($user->tenant_id)) { $tenantId = $user->tenant_id; } if (! $tenantId) { abort(401, 'Unauthenticated'); } return Tenant::findOrFail($tenantId); } }