shoc-backend/SeaHaven.Services/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
..
AccountOwnerDesignationService.cs feat(permissions): protect configured account owner (SH-329) 2026-09-16 21:40:22 -03:00
AccountService.cs backend changes 2026-05-14 11:00:12 -05:00
AssetService.cs backend changes 2026-05-14 11:00:12 -05:00
AuthenticationService.cs fix(auth): harden password reset codes against guessing and email enumeration 2026-09-25 12:21:29 -03:00
CalendarService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
CommonService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
CompletionDocTemplateService.cs fix(completion-templates): let PUT clear workOrderType with an explicit null 2026-09-25 11:40:49 -03:00
ContactService.cs backend changes 2026-05-14 11:00:12 -05:00
DashboardService.cs feat(dashboard): count open unassigned work orders for the period (SH-392) 2026-09-24 21:11:31 -03:00
DispatchService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
DropdownOptionsService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
EmployeeService.cs backend changes 2026-05-14 11:00:12 -05:00
FollowUpService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
LocationService.cs feat(locations): support site registry queries (SH-330) 2026-09-16 20:45:15 -03:00
NotificationFeedService.cs feat(notifications): SEV response-window alerts and breach acknowledgement 2026-09-25 11:16:21 -03:00
PastDueCacheService.cs feat(work-orders): add Phase 5 scheduled domain events (WeekRolled) 2026-07-24 10:13:17 -03:00
PMScheduleService.cs backend changes 2026-05-14 11:00:12 -05:00
QuotesService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
ServicesRegistryService.cs fix(services): allow admins to reactivate services 2026-09-16 22:30:32 -03:00
SettingsService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
SlaBreachAcknowledgementService.cs feat(notifications): SEV response-window alerts and breach acknowledgement 2026-09-25 11:16:21 -03:00
SyncFieldMergePolicy.cs fix(work-orders): lock ScheduledStart/End when patching apptTime 2026-07-21 09:31:27 -03:00
SyncService.cs fix(work-orders): apply account scope across create and reads [SH-221] 2026-08-11 10:45:37 -03:00
TaskListTemplateService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
TeamMemberService.cs fix: make team member creation atomic 2026-09-23 03:35:23 -03:00
TeamPermissionPolicy.cs feat(permissions): add team member permission policy foundation (SH-327) 2026-09-16 17:48:37 -03:00
TeamPermissionService.cs feat(permissions): expose team member permission overrides (SH-328) 2026-09-16 18:02:02 -03:00
UpliftLifecycleService.cs fix(uplifts): audit uplift decisions on the dispatch's resolved work order 2026-09-24 23:30:16 -03:00
UpliftNotificationMessage.cs fix(uplifts): one per-path uplift amount for queue, approval and exposure 2026-09-25 02:32:58 -03:00
UpliftService.cs fix(uplifts): one per-path uplift amount for queue, approval and exposure 2026-09-25 02:32:58 -03:00
UpliftStatus.cs feat(work-orders): WO-scoped uplift endpoints and board summary (SH-196) 2026-08-13 14:49:56 -03:00
UserService.cs feat(team-members): support pending member creation (SH-325) 2026-09-16 21:41:55 -03:00
VendorCompanyRosterService.cs feat(vendors): add admin-assigned vendor company Area 2026-09-16 11:34:45 -03:00
VendorOperationsService.cs feat(notifications): serve the Notification Center feed grouped by reason 2026-09-18 12:40:37 -03:00
VendorPortalService.cs Merge pull request #173 from Sea-Haven-Industries/fix/ab/sh-383-media-contract 2026-09-25 06:02:21 +00:00
VendorPortalTokenService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
VendorService.cs feat(vendors): add admin-assigned vendor company Area 2026-09-16 11:34:45 -03:00
WorkOrderAccountResolver.cs feat(work-orders): stamp board create account from location 2026-08-26 09:12:48 -03:00
WorkOrderAdvancedSearchService.cs feat(workorders): filter board search to an exact work-order id set 2026-09-25 10:56:47 -03:00
WorkOrderAuditService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderBoardCancelService.cs fix(work-orders): symmetric NTE release, terminal guard, serialized cancel (SH-196) 2026-08-18 17:41:14 -03:00
WorkOrderBoardCreateService.cs fix(uplifts): resolve work-order uplifts through owned dispatches (SH-393) 2026-09-24 21:22:13 -03:00
WorkOrderBoardService.cs fix(workorders): persist manual POC override with audit and site-follow (SH-379) 2026-09-18 14:30:54 -03:00
WorkOrderBoardUpdateService.cs feat(work-orders): link service selections to registry 2026-09-16 18:02:57 -03:00
WorkOrderCommentService.cs fix(work-orders): block comment creation on canceled work orders 2026-08-24 09:59:13 -03:00
WorkOrderCompletionService.cs feat(completion-templates): author templates with safety note and ordered procedures 2026-09-25 11:00:22 -03:00
WorkOrderDetailService.cs feat(work-orders): capture Site/Vendor/POC snapshot on Completed 2026-09-10 15:46:25 -03:00
WorkOrderDispatchService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderFieldLockService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderIngestService.cs fix(work-orders): apply account scope across create and reads [SH-221] 2026-08-11 10:45:37 -03:00
WorkOrderMediaService.cs fix(media): name HEIC in the unsupported-type message and keep ticket keys out of comments 2026-09-25 02:58:15 -03:00
WorkOrderOpsHealthService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderPocService.cs fix(workorders): compare manual POC against the followed contact, not any site contact 2026-09-18 18:56:29 -03:00
WorkOrderReconciliationService.cs fix(work-orders): satisfy producer contract review 2026-07-27 16:33:06 -03:00
WorkOrderService.cs fix(work-orders): scope legacy GET GetComments by account [SH-221] 2026-08-11 15:18:29 -03:00
WorkOrderUpliftService.cs Merge remote-tracking branch 'origin/main' into lane/sh-327 2026-09-24 23:00:18 -03:00
WorkOrderWebhookService.cs fix(work-orders): apply account scope across create and reads [SH-221] 2026-08-11 10:45:37 -03:00
WorkOrderWeekRolledService.cs fix(work-orders): process all WeekRolled candidates across batches 2026-07-24 10:13:17 -03:00