mirror of
https://github.com/koel/koel
synced 2024-11-10 06:34:14 +00:00
fix: user avatar sometimes shows up as gravatar
This commit is contained in:
parent
1cb1125183
commit
ee4c97168b
3 changed files with 16 additions and 12 deletions
|
@ -99,6 +99,19 @@ function gravatar(string $email, int $size = 192): string
|
||||||
return sprintf("https://www.gravatar.com/avatar/%s?s=$size&d=robohash", md5(Str::lower($email)));
|
return sprintf("https://www.gravatar.com/avatar/%s?s=$size&d=robohash", md5(Str::lower($email)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function avatar_or_gravatar(?string $avatar, string $email): string
|
||||||
|
{
|
||||||
|
if (!$avatar) {
|
||||||
|
return gravatar($email);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Str::startsWith($avatar, ['http://', 'https://'])) {
|
||||||
|
return $avatar;
|
||||||
|
}
|
||||||
|
|
||||||
|
return user_avatar_url($avatar);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A quick check to determine if a mailer is configured.
|
* A quick check to determine if a mailer is configured.
|
||||||
* This is not bulletproof but should work in most cases.
|
* This is not bulletproof but should work in most cases.
|
||||||
|
|
|
@ -24,7 +24,7 @@ class CollaborativeSongResource extends SongResource
|
||||||
PlaylistCollaborator::make(
|
PlaylistCollaborator::make(
|
||||||
$this->song->collaborator_id,
|
$this->song->collaborator_id,
|
||||||
$this->song->collaborator_name,
|
$this->song->collaborator_name,
|
||||||
gravatar($this->song->collaborator_email),
|
avatar_or_gravatar($this->song->collaborator_avatar, $this->song->collaborator_email),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'added_at' => $this->song->added_at,
|
'added_at' => $this->song->added_at,
|
||||||
|
|
|
@ -16,7 +16,6 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
use Illuminate\Support\Str;
|
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
use Laravel\Sanctum\PersonalAccessToken;
|
use Laravel\Sanctum\PersonalAccessToken;
|
||||||
|
|
||||||
|
@ -109,20 +108,12 @@ class User extends Authenticatable
|
||||||
|
|
||||||
protected function avatar(): Attribute
|
protected function avatar(): Attribute
|
||||||
{
|
{
|
||||||
return Attribute::get(function (): string {
|
return Attribute::get(fn (): string => avatar_or_gravatar(Arr::get($this->attributes, 'avatar'), $this->email));
|
||||||
$avatar = Arr::get($this->attributes, 'avatar');
|
|
||||||
|
|
||||||
if (Str::startsWith($avatar, ['http://', 'https://'])) {
|
|
||||||
return $avatar;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $avatar ? user_avatar_url($avatar) : gravatar($this->email);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function hasCustomAvatar(): Attribute
|
protected function hasCustomAvatar(): Attribute
|
||||||
{
|
{
|
||||||
return Attribute::get(fn (): bool => (bool) $this->attributes['avatar']);
|
return Attribute::get(fn (): bool => (bool) Arr::get($this->attributes, 'avatar'));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function isProspect(): Attribute
|
protected function isProspect(): Attribute
|
||||||
|
|
Loading…
Reference in a new issue