Skip to content

Commit 779de42

Browse files
authored
[1.x] Fix persistent middleware with arguments (#283)
* Ensure arguments are not provided to persistent middleware * Fix code styling --------- Co-authored-by: timacdonald <timacdonald@users.noreply.github.com>
1 parent 22aca19 commit 779de42

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/PulseServiceProvider.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Illuminate\Queue\Events\WorkerStopping;
1515
use Illuminate\Routing\Router;
1616
use Illuminate\Support\ServiceProvider;
17+
use Illuminate\Support\Str;
1718
use Illuminate\View\Compilers\BladeCompiler;
1819
use Illuminate\View\Factory as ViewFactory;
1920
use Laravel\Pulse\Contracts\Ingest;
@@ -167,7 +168,13 @@ protected function registerComponents(): void
167168
});
168169

169170
$this->callAfterResolving('livewire', function (LivewireManager $livewire, Application $app) {
170-
$livewire->addPersistentMiddleware($app->make('config')->get('pulse.middleware', []));
171+
$middleware = collect($app->make('config')->get('pulse.middleware'))
172+
->map(fn ($middleware) => is_string($middleware)
173+
? Str::before($middleware, ':')
174+
: $middleware)
175+
->all();
176+
177+
$livewire->addPersistentMiddleware($middleware);
171178

172179
$livewire->component('pulse.cache', Livewire\Cache::class);
173180
$livewire->component('pulse.usage', Livewire\Usage::class);

tests/Feature/PulseTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
use Illuminate\Support\Facades\App;
66
use Illuminate\Support\Facades\Auth;
77
use Illuminate\Support\Facades\Config;
8+
use Illuminate\Support\Facades\Facade;
89
use Laravel\Pulse\Contracts\ResolvesUsers;
910
use Laravel\Pulse\Contracts\Storage;
1011
use Laravel\Pulse\Entry;
1112
use Laravel\Pulse\Facades\Pulse;
1213
use Laravel\Pulse\Value;
14+
use Livewire\LivewireManager;
1315
use Tests\StorageFake;
1416
use Tests\User;
1517

@@ -221,3 +223,19 @@ public function find(int|string|null $key): object
221223

222224
expect($handled)->toBe(true);
223225
});
226+
227+
it('strips arguments from persistent middleware', function () {
228+
App::forgetInstance(LivewireManager::class);
229+
Facade::clearResolvedInstance('livewire');
230+
Config::set('pulse.middleware', [MyTestMiddleware::class.':admin']);
231+
232+
$persistentMiddleware = Livewire::getPersistentMiddleware();
233+
234+
expect($persistentMiddleware)->toContain(MyTestMiddleware::class);
235+
expect($persistentMiddleware)->not->toContain(MyTestMiddleware::class.':admin');
236+
});
237+
238+
class MyTestMiddleware
239+
{
240+
//
241+
}

0 commit comments

Comments
 (0)