shoc-backend/SeaHaven.DataServices/Implementation
Alexandre Brandizzi c841e130be fix(auth): harden password reset codes against guessing and email enumeration
Forgot Password answers every address the same way and emails a code only
to an active account. Codes are stored as salted SHA-256 hashes, expire 15
minutes after issue, are replaced by a newer request, and are checked only
against the email they were issued to. Five failed checks delete the code;
attempts are reserved with one conditional UPDATE so concurrent guesses
cannot exceed the budget. VerificationCode requires the email, and email and
code are accepted in the JSON body so they stay out of URLs.

The three anonymous endpoints are rate limited to 10 requests per 15
minutes per client IP. Forwarded headers are trusted only through loopback
and private hops, since the API sits behind the EB load balancer and nginx.
The migration adds hash, salt, expiry and attempt columns and deletes the
old plaintext rows.
2026-09-25 12:21:29 -03:00
..
AccountDataService.cs fix(locations): gate account assignment by scope and active accounts 2026-08-26 14:16:59 -03:00
AccountOwnerDataService.cs feat(permissions): protect configured account owner (SH-329) 2026-09-16 21:40:22 -03:00
AssetDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
CalendarDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
CategoryDataService.cs refactor 2026-04-28 18:55:14 -05:00
CommentDataService.cs fix(work-orders): scope legacy GET GetComments by account [SH-221] 2026-08-11 15:18:29 -03:00
CommonDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
CompletionDocTemplateDataService.cs fix(completion-templates): read legacy status when counting open linked work orders 2026-09-25 11:19:59 -03:00
ContactDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
DashboardDataService.cs test(dashboard): pin drill-down rows for legacy open work orders 2026-09-25 03:38:31 -03:00
DispatchDataService.cs fix(uplifts): one per-path uplift amount for queue, approval and exposure 2026-09-25 02:32:58 -03:00
DropdownOptionsDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
EmployeeDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
FollowUpDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
ForgetPasswordDataService.cs fix(auth): harden password reset codes against guessing and email enumeration 2026-09-25 12:21:29 -03:00
LocationDataService.cs feat(locations): support site registry queries (SH-330) 2026-09-16 20:45:15 -03:00
NotificationFeedDataService.cs feat(notifications): SEV response-window alerts and breach acknowledgement 2026-09-25 11:16:21 -03:00
PMScheduleDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
QuotesDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
ServicesRegistryDataService.cs fix(services): translate duplicate name races 2026-09-16 17:31:21 -03:00
SettingsDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
SyncDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
TaskListTemplateDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
TeamPermissionOverrideDataService.cs Merge remote-tracking branch 'origin/dev' into feat/ab/sh-326-team-member 2026-09-17 14:06:12 -03:00
UpliftDataService.cs Keep work-order uplift requests read-only in the Vendor Portal 2026-09-25 02:52:03 -03:00
UserDataService.cs fix: make team member creation atomic 2026-09-23 03:35:23 -03:00
UserServiceAreaDataService.cs feat(team-members): support pending member creation (SH-325) 2026-09-16 21:41:55 -03:00
VendorCompanyRosterDataService.cs feat(vendors): add admin-assigned vendor company Area 2026-09-16 11:34:45 -03:00
VendorDataService.cs feat(vendors): add admin-assigned vendor company Area 2026-09-16 11:34:45 -03:00
VendorDocumentDataService.cs fix(media): enforce the per-work-order photo/video limit across both surfaces 2026-09-24 21:27:01 -03:00
VendorOperationsDataService.cs fix(notifications): ignore soft-deleted dispatches and cap conflicts by recency 2026-09-18 12:59:56 -03:00
WorkOrderAdvancedSearchDataService.cs feat(workorders): filter board search to an exact work-order id set 2026-09-25 10:56:47 -03:00
WorkOrderAuditDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderBoardDataService.cs feat(work-orders): include unresolved prior-week rows on GET board 2026-09-02 09:49:56 -03:00
WorkOrderBoardMutationDataService.cs fix(workorders): persist manual POC override with audit and site-follow (SH-379) 2026-09-18 14:30:54 -03:00
WorkOrderCompletionDataService.cs feat(completion-templates): author templates with safety note and ordered procedures 2026-09-25 11:00:22 -03:00
WorkOrderDataService.cs fix(work-orders): scope legacy list/detail GETs by account [SH-221] 2026-08-11 11:57:37 -03:00
WorkOrderDetailDataService.cs !fix(work-orders): fail-closed media account scope with org_scope claim [SH-221] 2026-08-06 10:26:04 -03:00
WorkOrderDomainJobDataService.cs fix(work-orders): derive Past Due from DueDate instead of ScheduledDate 2026-08-13 13:28:25 -03:00
WorkOrderFieldLockDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderIngestDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderMediaDataService.cs fix(media): enforce the per-work-order photo/video limit across both surfaces 2026-09-24 21:27:01 -03:00
WorkOrderOpsHealthDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderPocDataService.cs fix(workorders): persist manual POC override with audit and site-follow (SH-379) 2026-09-18 14:30:54 -03:00
WorkOrderReconciliationDataService.cs feat: complete SH-133 procurement reconciliation 2026-07-24 22:13:25 -03:00
WorkOrderWebhookDataService.cs fix(work-orders): apply account scope across create and reads [SH-221] 2026-08-11 10:45:37 -03:00