X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/17215431caec61334cd653e030ba3b42c7ef2ca1..refs/pull/3918/head:/app/Auth/User.php diff --git a/app/Auth/User.php b/app/Auth/User.php index f969b351f..6e66bc808 100644 --- a/app/Auth/User.php +++ b/app/Auth/User.php @@ -72,22 +72,25 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon */ protected $hidden = [ 'password', 'remember_token', 'system_name', 'email_confirmed', 'external_auth_id', 'email', - 'created_at', 'updated_at', 'image_id', + 'created_at', 'updated_at', 'image_id', 'roles', 'avatar', 'user_id', ]; /** * This holds the user's permissions when loaded. - * - * @var ?Collection */ - protected $permissions; + protected ?Collection $permissions; + + /** + * This holds the user's avatar URL when loaded to prevent re-calculating within the same request. + */ + protected string $avatarUrl = ''; /** * This holds the default user when loaded. * * @var null|User */ - protected static $defaultUser = null; + protected static ?User $defaultUser = null; /** * Returns the default public user. @@ -165,7 +168,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon } /** - * Get all permissions belonging to a the current user. + * Get all permissions belonging to the current user. */ protected function permissions(): Collection { @@ -235,12 +238,18 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon return $default; } + if (!empty($this->avatarUrl)) { + return $this->avatarUrl; + } + try { $avatar = $this->avatar ? url($this->avatar->getThumb($size, $size, false)) : $default; } catch (Exception $err) { $avatar = $default; } + $this->avatarUrl = $avatar; + return $avatar; }