KamoCRM

Rights on the session-only controllers, with the grant backfill (SITP TP01)

FixSecurityService
Shipped
October 18, 2026 at 5:27 PM UTC
Author
Kamo
Commit
7c53248

@RequireRight (any-of, tenant RoleRightType) enforced by TenantRightInterceptor before the handler, the tenant counterpart of @RequirePlatformRight: no session is a 401, a missing right a 403 naming it, an open god-mode window passes, god eligibility alone does not. - CommerceMarketController (~120 ungated handlers): reads ACCESS_COMMERCE; market/vendor/location/shipping setup MANAGE_SUBSCRIPTION_SETTINGS; the catalogue MANAGE_PRODUCTS, stock MANAGE_INVENTORY, retail customers MANAGE_RETAIL_CUSTOMERS, carts/draft orders/shipments MANAGE_FULFILLMENT, rental assets MANAGE_RENTALS, order notes VIEW_/MANAGE_ORDERS. - POSController **************** and the legacy mortgage routes (MLOS rights); RetailProduct/RetailInventory; CommerceVendorCategory. Stock by product id is now org-scoped. - CRM settings writes (custom forms, lead vendors, markets, status labels, import templates) take MANAGE_CRM_SETTINGS; template reads/detect also CREATE_LEADS. Their reads stay org-wide by decision (vocabulary, no customer data). - Lead callbacks follow the lead page's LeadViewGate; schedule/move/resolve take MANAGE_LEAD_CALLBACKS. - MortgageConnect: MLOS_VIEW_PIPELINE / any LOS write right, or a party to the application (was any org member, NPI). - OAuthConfig: CONFIGURE_SYSTEM or owner (any member could replace secrets). - SubdomainBranches: credential writes need CONFIGURE_SYSTEM or owner; the DNS log and retry no longer accept ANY org id (cross-tenant). - Encounter start/end/close-chart take MANAGE_ENCOUNTERS, not just VIEW_CHART. - Entitlements /{memberId}/feature and /invalidate: the caller's own id only. Grant backfill: **************** seeds each new right on the boot that introduces it, into roles, security-model templates and the override tables: **************** entry from MANAGE_SUBSCRIPTION_SETTINGS (the commerce settings screens), fulfilment and purchase approval from ACCESS_COMMERCE (the pipeline), callbacks from every lead-working right and ACCESS_VOIP, visits from VIEW_CHART. Tp01EndpointRightsCoverageTest fails on any handler in these controllers with no right check and no recorded decision.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing