Merge pull request #6668 from nextcloud/fix_6621
Remove avatar on user deletion
This commit is contained in:
commit
45971879f5
2 changed files with 37 additions and 1 deletions
|
@ -1362,6 +1362,9 @@ class View {
|
|||
$path = Filesystem::normalizePath($this->fakeRoot . '/' . $path);
|
||||
|
||||
$mount = Filesystem::getMountManager()->find($path);
|
||||
if (!$mount) {
|
||||
return false;
|
||||
}
|
||||
$storage = $mount->getStorage();
|
||||
$internalPath = $mount->getInternalPath($path);
|
||||
if ($storage) {
|
||||
|
@ -1411,6 +1414,9 @@ class View {
|
|||
$path = $this->getAbsolutePath($directory);
|
||||
$path = Filesystem::normalizePath($path);
|
||||
$mount = $this->getMount($directory);
|
||||
if (!$mount) {
|
||||
return [];
|
||||
}
|
||||
$storage = $mount->getStorage();
|
||||
$internalPath = $mount->getInternalPath($path);
|
||||
if ($storage) {
|
||||
|
|
|
@ -118,12 +118,14 @@ use OCP\Defaults;
|
|||
use OCA\Theming\Util;
|
||||
use OCP\Federation\ICloudIdManager;
|
||||
use OCP\Authentication\LoginCredentials\IStore;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\ICacheFactory;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IL10N;
|
||||
use OCP\IServerContainer;
|
||||
use OCP\ITempManager;
|
||||
use OCP\Contacts\ContactsMenu\IActionFactory;
|
||||
use OCP\IUser;
|
||||
use OCP\Lock\ILockingProvider;
|
||||
use OCP\Remote\Api\IApiFactory;
|
||||
use OCP\Remote\IInstanceFactory;
|
||||
|
@ -133,6 +135,7 @@ use OCP\Share;
|
|||
use OCP\Share\IShareHelper;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
/**
|
||||
* Class Server
|
||||
|
@ -348,6 +351,8 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
$defaultTokenProvider = null;
|
||||
}
|
||||
|
||||
$dispatcher = $c->getEventDispatcher();
|
||||
|
||||
$userSession = new \OC\User\Session($manager, $session, $timeFactory, $defaultTokenProvider, $c->getConfig(), $c->getSecureRandom(), $c->getLockdownManager());
|
||||
$userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) {
|
||||
\OC_Hook::emit('OC_User', 'pre_createUser', array('run' => true, 'uid' => $uid, 'password' => $password));
|
||||
|
@ -356,9 +361,10 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
/** @var $user \OC\User\User */
|
||||
\OC_Hook::emit('OC_User', 'post_createUser', array('uid' => $user->getUID(), 'password' => $password));
|
||||
});
|
||||
$userSession->listen('\OC\User', 'preDelete', function ($user) {
|
||||
$userSession->listen('\OC\User', 'preDelete', function ($user) use ($dispatcher) {
|
||||
/** @var $user \OC\User\User */
|
||||
\OC_Hook::emit('OC_User', 'pre_deleteUser', array('run' => true, 'uid' => $user->getUID()));
|
||||
$dispatcher->dispatch('OCP\IUser::preDelete', new GenericEvent($user));
|
||||
});
|
||||
$userSession->listen('\OC\User', 'postDelete', function ($user) {
|
||||
/** @var $user \OC\User\User */
|
||||
|
@ -1122,6 +1128,8 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
$memcacheFactory = $c->getMemCacheFactory();
|
||||
return new InstanceFactory($memcacheFactory->createLocal('remoteinstance.'), $c->getHTTPClientService());
|
||||
});
|
||||
|
||||
$this->connectDispatcher();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1131,6 +1139,28 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
return $this->query('CalendarManager');
|
||||
}
|
||||
|
||||
private function connectDispatcher() {
|
||||
$dispatcher = $this->getEventDispatcher();
|
||||
|
||||
// Delete avatar on user deletion
|
||||
$dispatcher->addListener('OCP\IUser::preDelete', function(GenericEvent $e) {
|
||||
$logger = $this->getLogger();
|
||||
$manager = $this->getAvatarManager();
|
||||
/** @var IUser $user */
|
||||
$user = $e->getSubject();
|
||||
|
||||
try {
|
||||
$avatar = $manager->getAvatar($user->getUID());
|
||||
$avatar->remove();
|
||||
} catch (NotFoundException $e) {
|
||||
// no avatar to remove
|
||||
} catch (\Exception $e) {
|
||||
// Ignore exceptions
|
||||
$logger->info('Could not cleanup avatar of ' . $user->getUID());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \OCP\Contacts\IManager
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue