-
app/Models/User.php
Open in GitHubuse Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Support\Uri; class User extends Authenticatable implements FilamentUser, HasAvatar, MustVerifyEmail { // ... public function avatar(): Attribute { return Attribute::make( get: function (): string { if (blank($this->avatar_url)) { return Uri::of('https://ui-avatars.com/api/') ->withQuery([ 'name' => str($this->name)->squish()->words(2, '')->replace(' ', '+')->toString(), 'background' => 'ffd0d2', 'color' => 'EF5A6F', 'rounded' => 'true', 'bold' => 'true', ])->value(); } if (filled(parse_url($this->avatar_url, PHP_URL_HOST))) { return $this->avatar_url; } return asset(str($this->avatar_url)->prepend('storage/')); } )->shouldCache(); } // ... }
-
resources/views/livewire/user-avatar.blade.php
Open in GitHub<div x-data> <img loading="lazy" src="{{ auth()->user()->avatar }}" x-on:update-user-profile-picture.window="$wire.$refresh()" /> </div>