use 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();
}
// ...
}