Merge branch 'deleteCredentialCleanup'

This commit is contained in:
brantje 2017-01-11 21:38:00 +01:00
commit fc3186eeaf
No known key found for this signature in database
GPG key ID: 5FF1D117F918687F
3 changed files with 28 additions and 14 deletions

View file

@ -266,6 +266,10 @@ class CredentialController extends ApiController {
'item_destroyed_self', array($credential->getLabel()), 'item_destroyed_self', array($credential->getLabel()),
'', array(), '', array(),
'', $this->userId, Activity::TYPE_ITEM_ACTION); '', $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 { } else {
$result = false; $result = false;
} }

View file

@ -213,20 +213,7 @@ class ShareController extends ApiController {
* @NoCSRFRequired * @NoCSRFRequired
*/ */
public function unshareCredential($item_guid) { public function unshareCredential($item_guid) {
$acl_list = $this->shareService->getCredentialAclList($item_guid); $this->shareService->unshareCredential($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);
}
return new JSONResponse(array('result' => true)); return new JSONResponse(array('result' => true));
} }

View file

@ -315,4 +315,27 @@ class ShareService {
public function updatePendingShareRequestsForCredential($item_guid, $user_id, $permissions) { public function updatePendingShareRequestsForCredential($item_guid, $user_id, $permissions) {
return $this->shareRequest->updatePendingRequestPermissions($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);
}
}
} }