From 331eda72ff966dd6792b1555d130a8997f567ff2 Mon Sep 17 00:00:00 2001 From: brantje Date: Wed, 11 Jan 2017 21:16:19 +0100 Subject: [PATCH] Clean up when a credential is deleted --- controller/credentialcontroller.php | 4 ++++ controller/sharecontroller.php | 15 +-------------- lib/Service/ShareService.php | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/controller/credentialcontroller.php b/controller/credentialcontroller.php index cd629986..e956a131 100644 --- a/controller/credentialcontroller.php +++ b/controller/credentialcontroller.php @@ -266,6 +266,10 @@ class CredentialController extends ApiController { 'item_destroyed_self', array($credential->getLabel()), '', array(), '', $this->userId, Activity::TYPE_ITEM_ACTION); + $this->sharingService->unshareCredential($credential->getGuid()); + foreach($this->credentialRevisionService->getRevisions($credential->getId()) as $revision){ + $this->credentialRevisionService->deleteRevision($revision->getId(), $this->userId); + } } else { $result = false; } diff --git a/controller/sharecontroller.php b/controller/sharecontroller.php index 89c9fbe6..7c921b53 100644 --- a/controller/sharecontroller.php +++ b/controller/sharecontroller.php @@ -213,20 +213,7 @@ class ShareController extends ApiController { * @NoCSRFRequired */ public function unshareCredential($item_guid) { - $acl_list = $this->shareService->getCredentialAclList($item_guid); - $request_list = $this->shareService->getShareRequestsByGuid($item_guid); - foreach ($acl_list as $ACL) { - $this->shareService->deleteShareACL($ACL); - } - foreach ($request_list as $request) { - $this->shareService->deleteShareRequest($request); - $manager = \OC::$server->getNotificationManager(); - $notification = $manager->createNotification(); - $notification->setApp('passman') - ->setObject('passman_share_request', $request->getId()) - ->setUser($request->getTargetUserId()); - $manager->markProcessed($notification); - } + $this->shareService->unshareCredential($item_guid); return new JSONResponse(array('result' => true)); } diff --git a/lib/Service/ShareService.php b/lib/Service/ShareService.php index 7faed869..8dec01db 100644 --- a/lib/Service/ShareService.php +++ b/lib/Service/ShareService.php @@ -315,4 +315,27 @@ class ShareService { public function updatePendingShareRequestsForCredential($item_guid, $user_id, $permissions) { return $this->shareRequest->updatePendingRequestPermissions($item_guid, $user_id, $permissions); } + + /** + * Clean up on credential destroyed. + * This will delete all ACL's and share requests. + * @param string $item_guid + */ + + public function unshareCredential($item_guid) { + $acl_list = $this->getCredentialAclList($item_guid); + $request_list = $this->getShareRequestsByGuid($item_guid); + foreach ($acl_list as $ACL) { + $this->deleteShareACL($ACL); + } + foreach ($request_list as $request) { + $this->deleteShareRequest($request); + $manager = \OC::$server->getNotificationManager(); + $notification = $manager->createNotification(); + $notification->setApp('passman') + ->setObject('passman_share_request', $request->getId()) + ->setUser($request->getTargetUserId()); + $manager->markProcessed($notification); + } + } } \ No newline at end of file