diff options
author | skjnldsv <skjnldsv@protonmail.com> | 2024-06-06 18:48:14 +0200 |
---|---|---|
committer | skjnldsv <skjnldsv@protonmail.com> | 2024-06-12 10:27:29 +0200 |
commit | fb11672df6f05a502549c596b5f5443988bb5edb (patch) | |
tree | dbe5c655301faf0533bd6a579fb85d4c4221ef67 | |
parent | a0a36563b61c85989a0791edfac1ed07bf920787 (diff) | |
download | nextcloud-server-fb11672df6f05a502549c596b5f5443988bb5edb.tar.gz nextcloud-server-fb11672df6f05a502549c596b5f5443988bb5edb.zip |
fix(core): allow guest avatar fallback
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
-rw-r--r-- | core/Controller/AvatarController.php | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/core/Controller/AvatarController.php b/core/Controller/AvatarController.php index 3fb3407a70f..88a5aa402aa 100644 --- a/core/Controller/AvatarController.php +++ b/core/Controller/AvatarController.php @@ -14,12 +14,14 @@ use OCP\AppFramework\Http\Attribute\FrontpageRoute; use OCP\AppFramework\Http\DataDisplayResponse; use OCP\AppFramework\Http\FileDisplayResponse; use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\RedirectResponse; use OCP\Files\File; use OCP\Files\IRootFolder; use OCP\IAvatarManager; use OCP\ICache; use OCP\IL10N; use OCP\IRequest; +use OCP\IURLGenerator; use OCP\IUserManager; use Psr\Log\LoggerInterface; @@ -40,6 +42,8 @@ class AvatarController extends Controller { protected LoggerInterface $logger, protected ?string $userId, protected TimeFactory $timeFactory, + protected IURLGenerator $urlGenerator, + protected GuestAvatarController $guestAvatarController, ) { parent::__construct($appName, $request); } @@ -60,7 +64,7 @@ class AvatarController extends Controller { * 404: Avatar not found */ #[FrontpageRoute(verb: 'GET', url: '/avatar/{userId}/{size}/dark')] - public function getAvatarDark(string $userId, int $size) { + public function getAvatarDark(string $userId, int $size, bool $guestFallback = false) { if ($size <= 64) { if ($size !== 64) { $this->logger->debug('Avatar requested in deprecated size ' . $size); @@ -82,6 +86,9 @@ class AvatarController extends Controller { ['Content-Type' => $avatarFile->getMimeType(), 'X-NC-IsCustomAvatar' => (int)$avatar->isCustomAvatar()] ); } catch (\Exception $e) { + if ($guestFallback) { + return $this->guestAvatarController->getAvatarDark($userId, (string)$size); + } return new JSONResponse([], Http::STATUS_NOT_FOUND); } @@ -107,7 +114,7 @@ class AvatarController extends Controller { * 404: Avatar not found */ #[FrontpageRoute(verb: 'GET', url: '/avatar/{userId}/{size}')] - public function getAvatar(string $userId, int $size) { + public function getAvatar(string $userId, int $size, bool $guestFallback = false) { if ($size <= 64) { if ($size !== 64) { $this->logger->debug('Avatar requested in deprecated size ' . $size); @@ -129,6 +136,9 @@ class AvatarController extends Controller { ['Content-Type' => $avatarFile->getMimeType(), 'X-NC-IsCustomAvatar' => (int)$avatar->isCustomAvatar()] ); } catch (\Exception $e) { + if ($guestFallback) { + return $this->guestAvatarController->getAvatar($userId, (string)$size); + } return new JSONResponse([], Http::STATUS_NOT_FOUND); } |