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
{
$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]);
}
}
$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]);
}
}
*/
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;
/**
* 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;
*/
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';