attributes->get('tenant'); if (! $tenant instanceof Tenant) { $tenant = $this->resolveTenant($request); $request->attributes->set('tenant', $tenant); $request->attributes->set('tenant_id', $tenant->id); $request->merge([ 'tenant' => $tenant, 'tenant_id' => $tenant->id, ]); } if ($this->requiresCredits($request)) { $violation = $this->limitEvaluator->assessEventCreation($tenant); if ($violation !== null) { return ApiError::response( $violation['code'], $violation['title'], $violation['message'], $violation['status'], $violation['meta'] ); } } return $next($request); } private function requiresCredits(Request $request): bool { return $request->isMethod('post') && $request->routeIs('api.v1.tenant.events.store'); } 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); } }