Skip to content

Commit 8919574

Browse files
committed
fix: cascade delete signer to identify_method
Signed-off-by: Vitor Mattos <[email protected]>
1 parent 4170714 commit 8919574

5 files changed

Lines changed: 19 additions & 5 deletions

File tree

lib/Db/IdentifyMethodMapper.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ public function neutralizeDeletedUser(string $userId, string $displayName): void
7474
}
7575
}
7676

77+
public function deleteBySignRequestId(int $signRequestId): void {
78+
$qb = $this->db->getQueryBuilder();
79+
$qb->delete('libresign_identify_method')
80+
->where(
81+
$qb->expr()->eq('sign_request_id', $qb->createNamedParameter($signRequestId, IQueryBuilder::PARAM_INT))
82+
)
83+
->executeStatement();
84+
unset($this->methodsBySignRequest[$signRequestId]);
85+
}
86+
7787
/**
7888
* @return array<string, string>[]
7989
*/

lib/Service/FileService.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -809,6 +809,7 @@ public function delete(int $fileId): void {
809809
$this->fileElementService->deleteVisibleElements($file->getId());
810810
$list = $this->signRequestMapper->getByFileId($file->getId());
811811
foreach ($list as $signRequest) {
812+
$this->identifyMethodService->deleteBySignRequestId($signRequest->getId());
812813
$this->signRequestMapper->delete($signRequest);
813814
}
814815
$this->idDocsMapper->deleteByFileId($file->getId());

lib/Service/IdentifyMethodService.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,11 @@ public function getIdentifiedMethod(int $signRequestId): IIdentifyMethod {
220220
throw new LibresignException($this->l10n->t('Invalid identification method'), 1);
221221
}
222222

223+
public function deleteBySignRequestId(int $signRequestId): void {
224+
$this->identifyMethodMapper->deleteBySignRequestId($signRequestId);
225+
$this->clearCache();
226+
}
227+
223228
public function getSignMethodsOfIdentifiedFactors(int $signRequestId): array {
224229
$matrix = $this->getIdentifyMethodsFromSignRequestId($signRequestId);
225230
$return = [];

lib/Service/RequestSignatureService.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -545,11 +545,7 @@ public function unassociateToUser(int $fileId, int $signRequestId): void {
545545

546546
try {
547547
$this->signRequestMapper->delete($signRequest);
548-
foreach ($groupedIdentifyMethods as $identifyMethods) {
549-
foreach ($identifyMethods as $identifyMethod) {
550-
$this->identifyMethodMapper->delete($identifyMethod->getEntity());
551-
}
552-
}
548+
$this->identifyMethod->deleteBySignRequestId($signRequestId);
553549
$visibleElements = $this->fileElementMapper->getByFileIdAndSignRequestId($file->getId(), $signRequestId);
554550
foreach ($visibleElements as $visibleElement) {
555551
$this->fileElementMapper->delete($visibleElement);
@@ -630,6 +626,7 @@ public function deleteRequestSignature(array $data): void {
630626
throw new \Exception($this->l10n->t('Please provide either UUID or File object'));
631627
}
632628
foreach ($signatures as $signRequest) {
629+
$this->identifyMethod->deleteBySignRequestId($signRequest->getId());
633630
$this->signRequestMapper->delete($signRequest);
634631
}
635632
$this->fileMapper->delete($fileData);

tests/php/Unit/TestCase.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ private function cleanDatabase(): void {
180180

181181
$delete = $db->getQueryBuilder();
182182
$delete->delete('libresign_file')->executeStatement();
183+
$delete->delete('libresign_identify_method')->executeStatement();
183184
$delete->delete('libresign_sign_request')->executeStatement();
184185
$delete->delete('libresign_user_element')->executeStatement();
185186
$delete->delete('libresign_file_element')->executeStatement();

0 commit comments

Comments
 (0)