feat: Learner data export and account deletion — NDPR/GDPR self-service - #1093
Merged
Anuoluwapo25 merged 1 commit intoAug 26, 2026
Merged
Conversation
Provide NDPR/GDPR export and grace-period erasure flows while preserving public ledger records and dependent community content safely. Fixes bakeronchain#1080
anidroid1184
force-pushed
the
feat/1080-learner-data-rights
branch
from
August 25, 2026 17:49
4ee3cd1 to
4be6056
Compare
9 tasks
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.
Summary
4ee3cd1b7f2aa8ff75c5c68f8401c01286fcd707(27 files, 2,276 additions, 11 deletions).Backend and database
POST /api/me/export, owned export status and signed download endpoints, deletion status/cancel endpoints, andDELETE /api/mewith the exactDELETE MY ACCOUNTphrase plus fresh SEP-10 re-authentication by the same wallet.README.txtand one JSON file per configured relation; completion email is sent only when an existing contact email can be resolved.DATA_EXPORT_SIGNING_SECRETof at least 32 characters.Data policy and foreign keys
userstable or foreign keys to one; the account identifier is a Stellar wallet address. The policy therefore enumerates migration-defined address columns through migration 032 instead of relying on a user-table cascade.account_deletion_audit_log.deletion_request_id -> account_deletion_requests.idwithON DELETE RESTRICT.Frontend
ConfirmDialogwith typed confirmation and shows the irreversible on-chain-record warning before the wallet signing step.i18n and documentation
pspseudo-locale.docs/learner-data-rights.md; updates generated/static OpenAPI coverage andserver/.env.example.Security
Type of Change
Checklist
cargo testpasses — not applicable; no contract code changednpm run typecheckpasses — not claimed separately; the GitHub Frontend build passed, while the available local verification focused on the new component testsnpm testpasses — the two targeted data-rights suites pass, but the repository-wide server suite has unrelated pre-existing failures listed belowScreenshots (if applicable)
Not included. The behavior is covered by component tests; no browser screenshot run was recorded in the available verification.
Testing
Passing checks
data-rights.service.test.tsandme-data-rights.routes.test.ts.DataRightsSettings.test.tsx.Server build and test(the workflow runs the server TypeScript build),Frontend build, andContract tests.Repository-wide pre-existing failures
These are separated from the focused #1080 results and were not changed by this PR:
src/pages/CreateBounty.tsxplus 240 warnings; no data-rights lint error was reported (one import-order warning exists in the new service).Environmental limitation
Additional Notes
enrollmentsand milestone work represented bymilestone_reportsare included, and future user-keyed tables must extend the policy and all-relations deletion coverage.Closes #1080