Added config to change Gravatar URL

This commit is contained in:
Vinrobot 2018-11-08 09:14:11 +01:00
parent 5b36ddb12f
commit 5e6c039b08
No known key found for this signature in database
GPG Key ID: 20207D962D63DD48
4 changed files with 17 additions and 5 deletions

View File

@ -61,6 +61,11 @@ DISCORD_APP_SECRET=false
# External services such as Gravatar and Draw.IO # External services such as Gravatar and Draw.IO
DISABLE_EXTERNAL_SERVICES=false DISABLE_EXTERNAL_SERVICES=false
# Default GRAVATAR_URL set to Gravatar service
GRAVATAR_URL=false
# To use a different service to get user's avatar like libravatar
# Possible placeholders: %{hash} %{size} %{email}
#GRAVATAR_URL=https://seccdn.libravatar.org/avatar/%{hash}?s=%{size}&d=identicon
# LDAP Settings # LDAP Settings
LDAP_SERVER=false LDAP_SERVER=false

View File

@ -251,7 +251,7 @@ class UserRepo
} }
try { try {
$avatar = Images::saveUserGravatar($user); $avatar = Images::saveUserGravatar($user, config('services.gravatar_url'));
$user->avatar()->associate($avatar); $user->avatar()->associate($avatar);
$user->save(); $user->save();
return true; return true;

View File

@ -281,16 +281,22 @@ class ImageService extends UploadService
/** /**
* Save a gravatar image and set a the profile image for a user. * Save a gravatar image and set a the profile image for a user.
* @param \BookStack\Auth\User $user * @param \BookStack\Auth\User $user
* @param null|string $gravatarUrl
* @param int $size * @param int $size
* @return mixed * @return mixed
* @throws Exception * @throws Exception
*/ */
public function saveUserGravatar(User $user, $size = 500) public function saveUserGravatar(User $user, $gravatarUrl, $size = 500)
{ {
$emailHash = md5(strtolower(trim($user->email))); if (!is_string($gravatarUrl) || empty($gravatarUrl)) {
$url = 'https://www.gravatar.com/avatar/' . $emailHash . '?s=' . $size . '&d=identicon'; $gravatarUrl = 'https://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon';
}
$email = strtolower(trim($user->email));
$gravatarUrl = str_replace('%{hash}', md5($email), $gravatarUrl);
$gravatarUrl = str_replace('%{size}', $size, $gravatarUrl);
$gravatarUrl = str_replace('%{email}', urlencode($email), $gravatarUrl);
$imageName = str_replace(' ', '-', $user->name . '-gravatar.png'); $imageName = str_replace(' ', '-', $user->name . '-gravatar.png');
$image = $this->saveNewFromUrl($url, 'user', $imageName); $image = $this->saveNewFromUrl($gravatarUrl, 'user', $imageName);
$image->created_by = $user->id; $image->created_by = $user->id;
$image->updated_by = $user->id; $image->updated_by = $user->id;
$image->save(); $image->save();

View File

@ -19,6 +19,7 @@ return [
'gravatar' => env('GRAVATAR', !env('DISABLE_EXTERNAL_SERVICES', false)), 'gravatar' => env('GRAVATAR', !env('DISABLE_EXTERNAL_SERVICES', false)),
'drawio' => env('DRAWIO', !env('DISABLE_EXTERNAL_SERVICES', false)), 'drawio' => env('DRAWIO', !env('DISABLE_EXTERNAL_SERVICES', false)),
'gravatar_url' => env('GRAVATAR_URL', false),
'callback_url' => env('APP_URL', false), 'callback_url' => env('APP_URL', false),