diff options
Diffstat (limited to 'lib/private/Encryption/EncryptionEventListener.php')
-rw-r--r-- | lib/private/Encryption/EncryptionEventListener.php | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/private/Encryption/EncryptionEventListener.php b/lib/private/Encryption/EncryptionEventListener.php index 59ac0dea932..d51b4b0d531 100644 --- a/lib/private/Encryption/EncryptionEventListener.php +++ b/lib/private/Encryption/EncryptionEventListener.php @@ -17,7 +17,9 @@ use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventListener; use OCP\Files\Events\Node\NodeRenamedEvent; +use OCP\Files\NotFoundException; use OCP\IUser; +use OCP\IUserManager; use OCP\IUserSession; use OCP\Share\Events\ShareCreatedEvent; use OCP\Share\Events\ShareDeletedEvent; @@ -31,6 +33,7 @@ class EncryptionEventListener implements IEventListener { private IUserSession $userSession, private SetupManager $setupManager, private Manager $encryptionManager, + private IUserManager $userManager, ) { } @@ -50,10 +53,14 @@ class EncryptionEventListener implements IEventListener { } elseif ($event instanceof ShareCreatedEvent) { $this->getUpdate()->postShared($event->getShare()->getNode()); } elseif ($event instanceof ShareDeletedEvent) { - // In case the unsharing happens in a background job, we don't have - // a session and we load instead the user from the UserManager - $owner = $event->getShare()->getNode()->getOwner(); - $this->getUpdate($owner)->postUnshared($event->getShare()->getNode()); + try { + // In case the unsharing happens in a background job, we don't have + // a session and we load instead the user from the UserManager + $owner = $this->userManager->get($event->getShare()->getShareOwner()); + $this->getUpdate($owner)->postUnshared($event->getShare()->getNode()); + } catch (NotFoundException $e) { + /* The node was deleted already, nothing to update */ + } } elseif ($event instanceof NodeRestoredEvent) { $this->getUpdate()->postRestore($event->getTarget()); } @@ -78,7 +85,7 @@ class EncryptionEventListener implements IEventListener { $this->updater = new Update( new Util( new View(), - \OC::$server->getUserManager(), + $this->userManager, \OC::$server->getGroupManager(), \OC::$server->getConfig()), \OC::$server->getEncryptionManager(), |