From d86bdd22d989eb47b6e9c1a62cd810d4d1eb8d2e Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sun, 31 May 2020 16:20:34 +0800 Subject: [PATCH] add filter for user panel --- app/Http/View/Composers/UserPanelComposer.php | 5 ++++- .../ViewTest/ComposersTest/UserPanelComposerTest.php | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/View/Composers/UserPanelComposer.php b/app/Http/View/Composers/UserPanelComposer.php index fd0f93d2..db0140fc 100644 --- a/app/Http/View/Composers/UserPanelComposer.php +++ b/app/Http/View/Composers/UserPanelComposer.php @@ -2,6 +2,7 @@ namespace App\Http\View\Composers; +use App\Models\User; use Blessing\Filter; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\View\View; @@ -22,15 +23,17 @@ class UserPanelComposer public function compose(View $view) { + /** @var User */ $user = auth()->user(); $avatarUrl = route('avatar.user', ['uid' => $user->uid, 'size' => 45]); $avatar = $this->filter->apply('user_avatar', $avatarUrl, [$user]); $badges = []; - if (auth()->user()->isAdmin()) { + if ($user->isAdmin()) { $badges[] = ['text' => 'STAFF', 'color' => 'primary']; } $this->dispatcher->dispatch(new \App\Events\RenderingBadges($badges)); + $badges = $this->filter->apply('user_badges', $badges, [$user]); $view->with(compact('user', 'avatar', 'badges')); } diff --git a/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php b/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php index 9da18d22..59b6552f 100644 --- a/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php +++ b/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php @@ -17,6 +17,8 @@ class UserPanelComposerTest extends TestCase public function testBadges() { + $filter = Fakes\Filter::fake(); + $user = factory(User::class)->create(); $this->actingAs($user); @@ -26,6 +28,12 @@ class UserPanelComposerTest extends TestCase $this->get('/user') ->assertSee('Pro', false); + $filter->assertApplied('user_badges', function ($badges, $user) { + $this->assertCount(1, $badges); + $this->assertInstanceOf(User::class, $user); + + return true; + }); $user->permission = User::ADMIN; $user->save();