KamoCRM

Gate the API on the app, not only the screen

FixSecurityService
Shipped
September 23, 2026 at 7:28 AM UTC
Author
Kamo
Commit
05ecc14

The settings page and the nav option both check organization.isHostedComputers, and until now that was the whole gate. AppAvailabilityInterceptor never mapped /api/security/hosted-computers to anything, so an organization that lost the app kept a working API behind a hidden screen - which is the asymmetry this interceptor exists to prevent, and the one the achievements entry was added for. It matters more here than for a screen-only app. Every other gated prefix returns rows; this one spends a physical resource. The assign handler creates a KubeVirt VM holding 2-16 GiB of a node's memory, reachable with nothing but a session and MANAGE_HOSTED_COMPUTERS, and the scheduler bounds the fleet by REQUESTS - so an org whose app was switched off would go on taking capacity from the orgs that still have it. Every handler under the prefix is session-scoped: the administrator's assignment and capacity surfaces, and the member's /mine and /{id}/launch pair. None of it is a cross-service seam, so one entry covers it and gatedPathPatterns derives the registration. The agent endpoints are deliberately outside it. They live on ComputeService behind APIService, authenticate with a per-computer bearer token and carry no session for resolveOrgId to read - and a running machine has to keep reporting its storage while the app is being switched off around it. A computer that cannot check in looks like one that has stopped.

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