34186518ce8b84a56a7d93e2bd7b9e7e921777dc
The SPA's env switcher calls GET /api/v1/admin/environments for every
authenticated user, not just admins. The URL-level /api/v1/admin/** ADMIN
matcher in SecurityConfig was shadowing the controller's intentional
@PreAuthorize("isAuthenticated()") override on listEnvironments(), so
OPERATOR and VIEWER got 403 and could not pick an env after login.
Add a more specific matcher for GET on the collection only — per-env
GET/PUT/DELETE stay ADMIN-locked under the catch-all. Regression tests in
SecurityFilterIT cover viewer/operator/admin → 200, no-JWT → 401/403,
and per-env GET as OPERATOR → 403 to guard against an over-broad widening.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
Observability server for Cameleer agents
Languages
Java
64.3%
TypeScript
28.1%
HTML
4.8%
CSS
2.7%