]> source.dussan.org Git - nextcloud-server.git/commitdiff
Delete avatar if a user is deleted 19929/head
authorJulius Härtl <jus@bitgrid.net>
Fri, 13 Mar 2020 13:16:43 +0000 (14:16 +0100)
committerJulius Härtl <jus@bitgrid.net>
Fri, 24 Apr 2020 14:27:17 +0000 (16:27 +0200)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
lib/private/Avatar/AvatarManager.php
lib/private/User/User.php

index 3bb0c4077e27f11b27380650d084bc67aa7ea8fa..37f57c9076957cca50fef8847196e23b7f5f46fb 100644 (file)
@@ -33,8 +33,10 @@ declare(strict_types=1);
 namespace OC\Avatar;
 
 use OC\User\Manager;
+use OC\User\NoUserException;
 use OCP\Files\IAppData;
 use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
 use OCP\IAvatar;
 use OCP\IAvatarManager;
 use OCP\IConfig;
@@ -125,6 +127,20 @@ class AvatarManager implements IAvatarManager {
                }
        }
 
+       public function deleteUserAvatar(string $userId): void {
+               try {
+                       $folder = $this->appData->getFolder($userId);
+                       $folder->delete();
+               } catch (NotFoundException $e) {
+                       $this->logger->debug("No cache for the user $userId. Ignoring avatar deletion");
+               } catch (NotPermittedException $e) {
+                       $this->logger->error("Unable to delete user avatars for $userId. gnoring avatar deletion");
+               } catch (NoUserException $e) {
+                       $this->logger->debug("User $userId not found. gnoring avatar deletion");
+               }
+               $this->config->deleteUserValue($userId, 'avatar', 'generated');
+       }
+
        /**
         * Returns a GuestAvatar.
         *
index dd451c8eb3f7d2da2ffaaf0ecf99fc232aea08cd..ccf5936c6597143cdefa5bde04ee7c128e6e0962 100644 (file)
@@ -36,6 +36,7 @@
 namespace OC\User;
 
 use OC\Accounts\AccountManager;
+use OC\Avatar\AvatarManager;
 use OC\Files\Cache\Storage;
 use OC\Hooks\Emitter;
 use OC_Helper;
@@ -238,6 +239,10 @@ class User implements IUser {
                        \OC::$server->getCommentsManager()->deleteReferencesOfActor('users', $this->uid);
                        \OC::$server->getCommentsManager()->deleteReadMarksFromUser($this);
 
+                       /** @var IAvatarManager $avatarManager */
+                       $avatarManager = \OC::$server->query(AvatarManager::class);
+                       $avatarManager->deleteUserAvatar($this->uid);
+
                        $notification = \OC::$server->getNotificationManager()->createNotification();
                        $notification->setUser($this->uid);
                        \OC::$server->getNotificationManager()->markProcessed($notification);