Borrower self-service authorization (loan-party IDOR guard)

FeatureSecurityService
Shipped
July 5, 2026 at 6:37 PM UTC
Author
Kamo
Commit
dd627e1

A borrower is a plain org Member with no operator LOS rights; they may act on the ONE application they are a party to — and only that one. Layered guard: operator gate first, else a fail-closed loan-party check (isMemberPartyToApp). MortgageAppController: - **************** overloads applied to get, all 23 per-app write endpoints, and the 3 repeating-section helpers. - list: operators see the org pipeline; a borrower sees only owned apps. - create: operator takes app (incl. from-lead); a borrower self-creates their own (ownership-stamped) — the KamoMLOS reward-gate mint. - delete: operator suspend-right OR the owning borrower; lookups: any authenticated session (reference enums the intake needs); journey stays operator-only. MortgageProgramController: closed a pre-existing IDOR on setPersona/setSelectedProgram (org-only check) — now operator-LOS-role OR loan-party. Operators unchanged; borrowers owner-scoped; cross-borrower IDOR closed (D52).

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing