Kyle Carberry
47846c0ee4
fix(site): inject permissions and organizations metadata to eliminate loading spinners ( #22741 )
...
## Problem
Two network requests were blocking the initial page render with
fullscreen `<Loader fullscreen />` spinners:
1. **`POST /api/v2/authcheck`** (permissions) — blocked in `RequireAuth`
via `AuthProvider.isLoading`
2. **`GET /api/v2/organizations`** — blocked in `DashboardProvider`
All other bootstrap queries (`user`, `entitlements`, `appearance`,
`experiments`, `build-info`, `regions`) already used server-side
metadata injection via `index.html` meta tags and resolved instantly.
These two did not.
## Solution
Follow the existing `cachedQuery` + `<meta>` tag pattern to inject both
datasets server-side:
### Server-side (`site/site.go`)
- Add `Permissions` and `Organizations` fields to `htmlState`
- Fetch organizations via `GetOrganizationsByUserID` in parallel with
existing queries
- Evaluate all `permissionChecks` using the RBAC authorizer directly
- Inject results as HTML-escaped JSON into `<meta>` tags
### Frontend
- Register `permissions` and `organizations` in `useEmbeddedMetadata`
- Update `checkAuthorization()` to accept optional metadata and use
`disabledRefetchOptions` when available
- Update `organizations()` to accept optional metadata and use
`cachedQuery` when available
- Wire metadata through `AuthProvider` and `DashboardProvider`
### Note
The Go `permissionChecks` map in `site/site.go` mirrors
`site/src/modules/permissions/index.ts` and must be kept in sync.
2026-03-09 16:12:04 +00:00
..
2026-03-09 16:51:46 +02:00
2025-06-20 13:16:55 -06:00
2026-01-21 19:06:19 +00:00
2026-03-06 21:05:26 +02:00
2026-03-02 16:02:01 +01:00
2024-09-18 21:47:53 +10:00
2026-01-08 15:24:11 +04:00
2026-02-24 16:45:56 +00:00
2023-10-30 19:44:29 +00:00
2025-12-15 13:44:44 -09:00
2026-02-06 09:52:17 -07:00
2026-02-06 10:12:58 +04:00
2026-03-08 22:25:27 -04:00
2026-03-03 13:48:58 +00:00
2025-10-16 01:56:43 +11:00
2026-01-08 15:24:11 +04:00
2026-03-08 22:25:27 -04:00
2026-02-19 09:02:19 +00:00
2026-02-03 17:52:07 +00:00
2026-01-29 13:50:15 +01:00
2026-03-05 20:29:49 +00:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2026-01-15 16:37:05 +00:00
2026-02-23 12:18:44 +01:00
2026-03-09 13:54:31 +01:00
2026-03-05 20:29:49 +00:00
2026-02-23 22:46:17 -06:00
2025-06-20 13:16:55 -06:00
2026-02-23 12:18:44 +01:00
2026-01-08 15:24:11 +04:00
2026-03-05 20:29:49 +00:00
2026-02-23 12:18:44 +01:00
2025-10-15 17:37:37 +00:00
2024-05-13 14:37:51 -04:00
2025-08-16 01:31:00 +10:00
2026-02-19 09:02:19 +00:00
2026-03-05 20:29:49 +00:00
2026-01-30 13:30:06 +01:00
2026-03-06 16:51:27 +00:00
2025-10-23 15:38:49 -05:00
2025-06-17 09:00:32 -08:00
2026-03-06 15:11:05 -08:00
2026-03-09 15:57:55 +00:00
2025-06-20 13:16:55 -06:00
2025-07-08 14:31:05 +00:00
2026-02-19 09:02:19 +00:00
2026-02-26 02:40:45 +11:00
2026-02-27 17:46:37 +00:00
2026-02-24 17:04:42 +00:00
2025-12-14 03:00:03 +00:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-08-22 16:32:35 +10:00
2025-06-20 13:16:55 -06:00
2026-03-06 15:09:58 +01:00
2026-01-08 15:24:11 +04:00
2026-03-06 09:14:11 +00:00
2026-01-08 15:24:11 +04:00
2026-02-27 14:26:48 +00:00
2025-03-31 10:55:44 -04:00
2025-12-15 11:26:41 -06:00
2025-11-17 13:24:12 +00:00
2026-02-25 13:14:32 +02:00
2026-03-07 01:36:03 +00:00
2025-09-26 11:56:34 +02:00
2026-03-06 09:14:11 +00:00
2026-02-24 15:27:03 +00:00
2024-08-01 12:07:19 -05:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-10-27 17:14:16 -06:00
2026-02-27 16:50:56 +00:00
2026-03-08 15:38:37 -04:00
2026-03-08 15:38:37 -04:00
2025-06-20 13:16:55 -06:00
2026-03-09 13:54:31 +01:00
2026-03-09 16:12:04 +00:00
2026-01-08 15:24:11 +04:00
2026-01-15 16:37:05 +00:00
2026-01-15 16:37:05 +00:00
2024-02-27 16:33:32 +00:00
2025-06-25 13:03:32 +00:00
2024-06-11 12:22:59 +10:00
2025-04-22 16:21:15 +00:00
2025-06-24 09:14:41 +01:00
2026-01-12 18:19:19 -08:00
2025-12-15 17:41:47 +00:00
2025-09-04 14:28:29 +10:00
2026-01-08 15:24:11 +04:00
2025-12-15 11:26:41 -06:00
2025-05-15 15:32:52 +01:00
2025-06-20 13:16:55 -06:00
2025-06-20 13:16:55 -06:00
2026-01-26 09:24:45 +00:00
2025-08-19 10:41:33 +02:00
2025-08-19 10:41:33 +02:00
2025-06-20 13:16:55 -06:00
2026-03-04 18:01:56 -08:00
2026-03-04 12:54:39 +02:00
2026-01-08 15:24:11 +04:00
2026-02-03 12:48:25 -06:00
2026-02-03 12:48:25 -06:00
2026-02-13 08:19:07 -06:00
2026-01-08 15:24:11 +04:00
2026-01-15 12:41:28 +03:00
2026-01-15 12:41:28 +03:00
2026-01-15 12:41:28 +03:00
2025-07-03 18:33:47 +02:00
2026-03-06 09:14:11 +00:00
2025-10-22 15:18:42 -05:00
2024-07-25 16:07:53 -05:00
2026-02-03 17:52:07 +00:00
2025-07-15 14:55:34 +10:00
2025-07-15 14:55:34 +10:00
2026-02-02 09:03:18 -06:00
2026-02-03 17:52:07 +00:00
2026-02-19 09:02:19 +00:00
2025-07-28 15:02:26 +01:00
2025-08-21 16:03:34 -04:00
2026-02-03 17:52:07 +00:00
2025-06-20 13:16:55 -06:00
2026-03-03 10:19:00 -05:00
2026-02-03 17:52:07 +00:00
2024-07-25 16:07:53 -05:00
2026-01-12 18:19:19 -08:00
2025-09-26 11:43:32 +02:00
2025-09-26 11:43:32 +02:00
2025-06-20 13:16:55 -06:00
2026-01-08 15:24:11 +04:00
2026-02-13 19:44:50 -05:00
2026-02-13 19:44:50 -05:00
2026-03-03 16:50:18 +00:00
2026-03-03 16:50:18 +00:00
2025-06-20 13:16:55 -06:00
2026-02-20 09:01:00 -06:00
2026-02-20 09:01:00 -06:00
2026-03-06 09:14:11 +00:00
2026-02-03 17:52:07 +00:00
2026-03-03 09:49:04 +00:00
2026-03-03 09:49:04 +00:00
2026-01-12 18:19:19 -08:00
2025-06-18 14:07:53 +00:00
2026-03-06 10:47:55 +01:00
2026-03-06 09:14:11 +00:00
2026-03-02 22:52:39 -05:00
2025-12-22 10:21:39 +04:00
2026-02-18 09:44:06 +01:00
2026-02-18 09:44:06 +01:00
2025-06-20 13:16:55 -06:00
2025-09-26 11:56:34 +02:00
2026-02-03 09:45:23 +00:00
2026-02-23 22:46:17 -06:00
2024-01-18 09:44:05 -06:00
2024-01-18 09:44:05 -06:00
2025-12-15 11:26:41 -06:00
2026-01-08 15:24:11 +04:00
2026-03-06 09:14:11 +00:00
2026-02-27 16:50:56 +00:00
2025-04-16 10:37:09 -06:00
2026-01-08 15:24:11 +04:00