Skip to content

Commit 673267c

Browse files
authored
Merge pull request #19929 from nextcloud/bugfix/user-delete-avatar
Delete avatar if a user is deleted
2 parents 1738e17 + d74e904 commit 673267c

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

lib/private/Avatar/AvatarManager.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@
3333
namespace OC\Avatar;
3434

3535
use OC\User\Manager;
36+
use OC\User\NoUserException;
3637
use OCP\Files\IAppData;
3738
use OCP\Files\NotFoundException;
39+
use OCP\Files\NotPermittedException;
3840
use OCP\IAvatar;
3941
use OCP\IAvatarManager;
4042
use OCP\IConfig;
@@ -125,6 +127,20 @@ public function clearCachedAvatars() {
125127
}
126128
}
127129

130+
public function deleteUserAvatar(string $userId): void {
131+
try {
132+
$folder = $this->appData->getFolder($userId);
133+
$folder->delete();
134+
} catch (NotFoundException $e) {
135+
$this->logger->debug("No cache for the user $userId. Ignoring avatar deletion");
136+
} catch (NotPermittedException $e) {
137+
$this->logger->error("Unable to delete user avatars for $userId. gnoring avatar deletion");
138+
} catch (NoUserException $e) {
139+
$this->logger->debug("User $userId not found. gnoring avatar deletion");
140+
}
141+
$this->config->deleteUserValue($userId, 'avatar', 'generated');
142+
}
143+
128144
/**
129145
* Returns a GuestAvatar.
130146
*

lib/private/User/User.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
namespace OC\User;
3737

3838
use OC\Accounts\AccountManager;
39+
use OC\Avatar\AvatarManager;
3940
use OC\Files\Cache\Storage;
4041
use OC\Hooks\Emitter;
4142
use OC_Helper;
@@ -238,6 +239,10 @@ public function delete() {
238239
\OC::$server->getCommentsManager()->deleteReferencesOfActor('users', $this->uid);
239240
\OC::$server->getCommentsManager()->deleteReadMarksFromUser($this);
240241

242+
/** @var IAvatarManager $avatarManager */
243+
$avatarManager = \OC::$server->query(AvatarManager::class);
244+
$avatarManager->deleteUserAvatar($this->uid);
245+
241246
$notification = \OC::$server->getNotificationManager()->createNotification();
242247
$notification->setUser($this->uid);
243248
\OC::$server->getNotificationManager()->markProcessed($notification);

0 commit comments

Comments
 (0)