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;
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'));
}

View File

@ -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('<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->save();