aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorskjnldsv <skjnldsv@protonmail.com>2024-06-06 18:48:14 +0200
committerskjnldsv <skjnldsv@protonmail.com>2024-06-12 10:27:29 +0200
commitfb11672df6f05a502549c596b5f5443988bb5edb (patch)
treedbe5c655301faf0533bd6a579fb85d4c4221ef67
parenta0a36563b61c85989a0791edfac1ed07bf920787 (diff)
downloadnextcloud-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.php14
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);
}