feat: add idempotent GDPR erasure that safely handles repeated invocations.#923
Open
dot-enny wants to merge 1 commit into
Open
feat: add idempotent GDPR erasure that safely handles repeated invocations.#923dot-enny wants to merge 1 commit into
dot-enny wants to merge 1 commit into
Conversation
|
@dot-enny Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #847
This PR implements idempotent GDPR user data erasure. Repeated invocations of
eraseUserDatawill now exit cleanly and safely without attempting redundant database writes or creating duplicate audit logs.Changes Made
GDPR Service (
src/modules/gdpr/gdpr.service.ts):deletedAtis already set on the user object, and returns{ success: true, alreadyErased: true }early if true.orUpdatesemantics using a transactional query builder to ensure safe, idempotent updates.GDPR Unit Tests (
src/modules/gdpr/tests/gdpr.service.spec.ts):eraseUserDataa second time succeeds safely without executing duplicate writes or audit logs.Verification
Ran GDPR service test suite:
npx jest src/modules/gdpr/tests/gdpr.service.spec.ts PASS src/modules/gdpr/tests/gdpr.service.spec.ts GdprService ✓ exports user data and excludes sensitive credential fields (60 ms) ✓ erases user data (6 ms) ✓ supports idempotent erasure on repeated calls (11 ms) ✓ stores consent changes (4 ms) Test Suites: 1 passed, 1 total Tests: 4 passed, 4 total