security: untrack DataProtection keys and runtime exports; remove dead legacy controllers
- git rm --cached on committed DataProtection key XMLs (keys/, JobTrackerApi/keys/) and daily export JSON snapshots; extend .gitignore so runtime data (keys, exports, CV artifacts/exports/benchmarks) can never be committed again. - Delete root Controller/ stubs: an early prototype compiled by no project (JobTrackerApi excludes them; JobTrackerBackend globs only JobTrackerApi/Controllers). - NOTE: the removed key XMLs remain in git history; rotating DataProtection keys on the server is recommended. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,99 +0,0 @@
|
||||
{
|
||||
"Version": "dailyexport.v1",
|
||||
"CreatedAt": "2026-03-25T02:00:00.0368687+01:00",
|
||||
"Companies": [
|
||||
{
|
||||
"Id": 1,
|
||||
"OwnerUserId": "23dc196b-f227-4499-93fe-403d8801e21c",
|
||||
"Name": "Acme Browser QA",
|
||||
"Location": null,
|
||||
"Source": null,
|
||||
"RecruiterName": "Maria Recruiter",
|
||||
"RecruiterEmail": "maria@acme.test",
|
||||
"RecruiterLinkedIn": null,
|
||||
"LastContactedAt": "2026-03-24T11:15:21.4772436",
|
||||
"NextContactAt": "2026-03-24T00:00:00",
|
||||
"PipelineStage": null
|
||||
}
|
||||
],
|
||||
"JobApplications": [
|
||||
{
|
||||
"Id": 1,
|
||||
"OwnerUserId": "23dc196b-f227-4499-93fe-403d8801e21c",
|
||||
"JobTitle": "Backend Developer",
|
||||
"CompanyId": 1,
|
||||
"Company": null,
|
||||
"Status": "Waiting",
|
||||
"DateApplied": "2026-03-01T13:00:00+01:00",
|
||||
"Location": null,
|
||||
"Salary": null,
|
||||
"NextAction": null,
|
||||
"FollowUpAt": "2026-03-24T00:00:00",
|
||||
"FeedbackRequestedAt": null,
|
||||
"RecruiterMessageDraft": "Saved browser recruiter message",
|
||||
"HasResume": true,
|
||||
"HasCoverLetter": true,
|
||||
"HasPortfolio": false,
|
||||
"HasOtherAttachment": false,
|
||||
"IsDeleted": false,
|
||||
"DeletedAt": null,
|
||||
"ResponseReceived": true,
|
||||
"ResponseDate": null,
|
||||
"Notes": "Browser-seeded notes\n\n\u003C\u003C\u003CAPPLICATION_ANSWER_DRAFT\u003E\u003E\u003E\nSaved browser application answer\n\u003C\u003C\u003CEND_APPLICATION_ANSWER_DRAFT\u003E\u003E\u003E",
|
||||
"CoverLetterText": "Saved browser cover letter",
|
||||
"JobUrl": "https://example.test/backend-developer",
|
||||
"Description": "Need .NET APIs and strong stakeholder communication.",
|
||||
"TranslatedDescription": null,
|
||||
"DescriptionLanguage": null,
|
||||
"Tags": "[\u0022.NET\u0022, \u0022APIs\u0022, \u0022Communication\u0022]",
|
||||
"Deadline": null,
|
||||
"ShortSummary": "Strong overlap in backend API delivery.",
|
||||
"TailoredCvText": "Saved browser tailored CV",
|
||||
"TailoredCvUpdatedAt": "2026-03-24T10:58:13.226164+01:00",
|
||||
"LastReminderEmailSentAt": null,
|
||||
"Messages": [],
|
||||
"Attachments": [],
|
||||
"Events": [],
|
||||
"DaysSince": 23
|
||||
}
|
||||
],
|
||||
"Correspondence": [
|
||||
{
|
||||
"Id": 1,
|
||||
"JobApplicationId": 1,
|
||||
"From": "Company",
|
||||
"Subject": "Backend Developer application update",
|
||||
"Channel": "Email",
|
||||
"ExternalMessageId": "browser-msg-1",
|
||||
"ExternalThreadId": "browser-thread-1",
|
||||
"ExternalFrom": "Maria Recruiter \u003Cmaria@acme.test\u003E",
|
||||
"ExternalTo": "admin@example.com",
|
||||
"Content": "We are aligning interview slots and need someone who can own the API layer.",
|
||||
"Date": "2026-03-10T10:00:00+01:00"
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"JobApplicationId": 1,
|
||||
"From": "Me",
|
||||
"Subject": "Re: Backend Developer application update",
|
||||
"Channel": "Email",
|
||||
"ExternalMessageId": null,
|
||||
"ExternalThreadId": null,
|
||||
"ExternalFrom": null,
|
||||
"ExternalTo": null,
|
||||
"Content": "Hi Maria,\n\nEdited browser follow-up.\n\nThanks,\nadmin@example.com",
|
||||
"Date": "2026-03-24T11:15:21.4521755"
|
||||
}
|
||||
],
|
||||
"Attachments": [],
|
||||
"Events": [],
|
||||
"Rules": {
|
||||
"Id": 1,
|
||||
"AppliedFollowUpDays": 14,
|
||||
"AppliedGhostDays": 30,
|
||||
"OfferFollowUpDays": 7,
|
||||
"OfferGhostDays": 14,
|
||||
"FeedbackFollowUpDays": 7,
|
||||
"FeedbackGhostDays": 14
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
{
|
||||
"Version": "dailyexport.v1",
|
||||
"CreatedAt": "2026-03-26T02:00:00.005823+01:00",
|
||||
"Companies": [
|
||||
{
|
||||
"Id": 1,
|
||||
"OwnerUserId": "23dc196b-f227-4499-93fe-403d8801e21c",
|
||||
"Name": "Acme Browser QA",
|
||||
"Location": null,
|
||||
"Source": null,
|
||||
"RecruiterName": "Maria Recruiter",
|
||||
"RecruiterEmail": "maria@acme.test",
|
||||
"RecruiterLinkedIn": null,
|
||||
"LastContactedAt": "2026-03-24T11:15:21.4772436",
|
||||
"NextContactAt": "2026-03-24T00:00:00",
|
||||
"PipelineStage": null
|
||||
}
|
||||
],
|
||||
"JobApplications": [
|
||||
{
|
||||
"Id": 1,
|
||||
"OwnerUserId": "23dc196b-f227-4499-93fe-403d8801e21c",
|
||||
"JobTitle": "Backend Developer",
|
||||
"CompanyId": 1,
|
||||
"Company": null,
|
||||
"Status": "Waiting",
|
||||
"DateApplied": "2026-03-01T13:00:00+01:00",
|
||||
"Location": null,
|
||||
"Salary": null,
|
||||
"NextAction": null,
|
||||
"FollowUpAt": "2026-03-24T00:00:00",
|
||||
"FeedbackRequestedAt": null,
|
||||
"RecruiterMessageDraft": "Saved browser recruiter message",
|
||||
"HasResume": true,
|
||||
"HasCoverLetter": true,
|
||||
"HasPortfolio": false,
|
||||
"HasOtherAttachment": false,
|
||||
"IsDeleted": false,
|
||||
"DeletedAt": null,
|
||||
"ResponseReceived": true,
|
||||
"ResponseDate": null,
|
||||
"Notes": "Browser-seeded notes\n\n\u003C\u003C\u003CAPPLICATION_ANSWER_DRAFT\u003E\u003E\u003E\nSaved browser application answer\n\u003C\u003C\u003CEND_APPLICATION_ANSWER_DRAFT\u003E\u003E\u003E",
|
||||
"CoverLetterText": "Saved browser cover letter",
|
||||
"JobUrl": "https://example.test/backend-developer",
|
||||
"Description": "Need .NET APIs and strong stakeholder communication.",
|
||||
"TranslatedDescription": null,
|
||||
"DescriptionLanguage": null,
|
||||
"Tags": "[\u0022.NET\u0022, \u0022APIs\u0022, \u0022Communication\u0022]",
|
||||
"Deadline": null,
|
||||
"ShortSummary": "Strong overlap in backend API delivery.",
|
||||
"TailoredCvText": "Saved browser tailored CV",
|
||||
"TailoredCvUpdatedAt": "2026-03-24T10:58:13.226164+01:00",
|
||||
"LastReminderEmailSentAt": null,
|
||||
"Messages": [],
|
||||
"Attachments": [],
|
||||
"Events": [],
|
||||
"DaysSince": 24
|
||||
}
|
||||
],
|
||||
"Correspondence": [
|
||||
{
|
||||
"Id": 1,
|
||||
"JobApplicationId": 1,
|
||||
"From": "Company",
|
||||
"Subject": "Backend Developer application update",
|
||||
"Channel": "Email",
|
||||
"ExternalMessageId": "browser-msg-1",
|
||||
"ExternalThreadId": "browser-thread-1",
|
||||
"ExternalFrom": "Maria Recruiter \u003Cmaria@acme.test\u003E",
|
||||
"ExternalTo": "admin@example.com",
|
||||
"Content": "We are aligning interview slots and need someone who can own the API layer.",
|
||||
"Date": "2026-03-10T10:00:00+01:00"
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"JobApplicationId": 1,
|
||||
"From": "Me",
|
||||
"Subject": "Re: Backend Developer application update",
|
||||
"Channel": "Email",
|
||||
"ExternalMessageId": null,
|
||||
"ExternalThreadId": null,
|
||||
"ExternalFrom": null,
|
||||
"ExternalTo": null,
|
||||
"Content": "Hi Maria,\n\nEdited browser follow-up.\n\nThanks,\nadmin@example.com",
|
||||
"Date": "2026-03-24T11:15:21.4521755"
|
||||
}
|
||||
],
|
||||
"Attachments": [],
|
||||
"Events": [],
|
||||
"Rules": {
|
||||
"Id": 1,
|
||||
"AppliedFollowUpDays": 14,
|
||||
"AppliedGhostDays": 30,
|
||||
"OfferFollowUpDays": 7,
|
||||
"OfferGhostDays": 14,
|
||||
"FeedbackFollowUpDays": 7,
|
||||
"FeedbackGhostDays": 14
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<key id="9a89a42c-d2bd-4770-83fb-5930685432db" version="1">
|
||||
<creationDate>2026-03-24T09:54:28.8487759Z</creationDate>
|
||||
<activationDate>2026-03-24T09:54:28.8487759Z</activationDate>
|
||||
<expirationDate>2026-06-22T09:54:28.8487759Z</expirationDate>
|
||||
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=9.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
|
||||
<descriptor>
|
||||
<encryption algorithm="AES_256_CBC" />
|
||||
<validation algorithm="HMACSHA256" />
|
||||
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
|
||||
<!-- Warning: the key below is in an unencrypted form. -->
|
||||
<value>LXbXqbpiEXn0OM6fr/TuXDBcZd83DvOInTI09PGZRr1Z20LQCD/PUKF1oo9UwC4O1VgK3wA//yxH9PPCIPzEaw==</value>
|
||||
</masterKey>
|
||||
</descriptor>
|
||||
</descriptor>
|
||||
</key>
|
||||
Reference in New Issue
Block a user