]> BookStack Code Mirror - bookstack/blobdiff - app/Uploads/UserAvatars.php
Fixed OIDC Logout
[bookstack] / app / Uploads / UserAvatars.php
index f5b085a35d5cf802a45de6710034421f4c653716..3cd37812acbd40f14aec23ae2bb1d386a49df693 100644 (file)
@@ -2,10 +2,11 @@
 
 namespace BookStack\Uploads;
 
-use BookStack\Auth\User;
 use BookStack\Exceptions\HttpFetchException;
+use BookStack\Users\Models\User;
 use Exception;
 use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Str;
 
 class UserAvatars
 {
@@ -33,7 +34,7 @@ class UserAvatars
             $user->avatar()->associate($avatar);
             $user->save();
         } catch (Exception $e) {
-            Log::error('Failed to save user avatar image');
+            Log::error('Failed to save user avatar image', ['exception' => $e]);
         }
     }
 
@@ -48,7 +49,7 @@ class UserAvatars
             $user->avatar()->associate($avatar);
             $user->save();
         } catch (Exception $e) {
-            Log::error('Failed to save user avatar image');
+            Log::error('Failed to save user avatar image', ['exception' => $e]);
         }
     }
 
@@ -93,7 +94,7 @@ class UserAvatars
      */
     protected function createAvatarImageFromData(User $user, string $imageData, string $extension): Image
     {
-        $imageName = str_replace(' ', '-', $user->id . '-avatar.' . $extension);
+        $imageName = Str::random(10) . '-avatar.' . $extension;
 
         $image = $this->imageService->saveNew($imageName, $imageData, 'user', $user->id);
         $image->created_by = $user->id;
@@ -106,14 +107,14 @@ class UserAvatars
     /**
      * Gets an image from url and returns it as a string of image data.
      *
-     * @throws Exception
+     * @throws HttpFetchException
      */
     protected function getAvatarImageData(string $url): string
     {
         try {
             $imageData = $this->http->fetch($url);
         } catch (HttpFetchException $exception) {
-            throw new Exception(trans('errors.cannot_get_image_from_url', ['url' => $url]));
+            throw new HttpFetchException(trans('errors.cannot_get_image_from_url', ['url' => $url]), $exception->getCode(), $exception);
         }
 
         return $imageData;
@@ -134,7 +135,12 @@ class UserAvatars
      */
     protected function getAvatarUrl(): string
     {
-        $url = trim(config('services.avatar_url'));
+        $configOption = config('services.avatar_url');
+        if ($configOption === false) {
+            return '';
+        }
+
+        $url = trim($configOption);
 
         if (empty($url) && !config('services.disable_services')) {
             $url = 'https://www.gravatar.com/avatar/${hash}?s=${size}&d=identicon';