add filter for user panel

This commit is contained in:
Pig Fang 2020-05-31 16:20:34 +08:00
parent 30e4c7d28a
commit d86bdd22d9
2 changed files with 12 additions and 1 deletions

View File

@ -2,6 +2,7 @@
namespace App\Http\View\Composers; namespace App\Http\View\Composers;
use App\Models\User;
use Blessing\Filter; use Blessing\Filter;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\View\View; use Illuminate\View\View;
@ -22,15 +23,17 @@ class UserPanelComposer
public function compose(View $view) public function compose(View $view)
{ {
/** @var User */
$user = auth()->user(); $user = auth()->user();
$avatarUrl = route('avatar.user', ['uid' => $user->uid, 'size' => 45]); $avatarUrl = route('avatar.user', ['uid' => $user->uid, 'size' => 45]);
$avatar = $this->filter->apply('user_avatar', $avatarUrl, [$user]); $avatar = $this->filter->apply('user_avatar', $avatarUrl, [$user]);
$badges = []; $badges = [];
if (auth()->user()->isAdmin()) { if ($user->isAdmin()) {
$badges[] = ['text' => 'STAFF', 'color' => 'primary']; $badges[] = ['text' => 'STAFF', 'color' => 'primary'];
} }
$this->dispatcher->dispatch(new \App\Events\RenderingBadges($badges)); $this->dispatcher->dispatch(new \App\Events\RenderingBadges($badges));
$badges = $this->filter->apply('user_badges', $badges, [$user]);
$view->with(compact('user', 'avatar', 'badges')); $view->with(compact('user', 'avatar', 'badges'));
} }

View File

@ -17,6 +17,8 @@ class UserPanelComposerTest extends TestCase
public function testBadges() public function testBadges()
{ {
$filter = Fakes\Filter::fake();
$user = factory(User::class)->create(); $user = factory(User::class)->create();
$this->actingAs($user); $this->actingAs($user);
@ -26,6 +28,12 @@ class UserPanelComposerTest extends TestCase
$this->get('/user') $this->get('/user')
->assertSee('<span class="badge bg-purple mb-1 mr-2">Pro</span>', false); ->assertSee('<span class="badge bg-purple mb-1 mr-2">Pro</span>', false);
$filter->assertApplied('user_badges', function ($badges, $user) {
$this->assertCount(1, $badges);
$this->assertInstanceOf(User::class, $user);
return true;
});
$user->permission = User::ADMIN; $user->permission = User::ADMIN;
$user->save(); $user->save();