Skip to content

Commit 02bcb84

Browse files
committed
Fix authenticated providers
1 parent e400810 commit 02bcb84

File tree

8 files changed

+148
-107
lines changed

8 files changed

+148
-107
lines changed

site/src/AppRouter.tsx

Lines changed: 128 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,20 @@ import TemplatesPage from "pages/TemplatesPage/TemplatesPage"
1111
import UsersPage from "pages/UsersPage/UsersPage"
1212
import WorkspacesPage from "pages/WorkspacesPage/WorkspacesPage"
1313
import { FC, lazy, Suspense } from "react"
14-
import { Route, Routes, BrowserRouter as Router } from "react-router-dom"
14+
import {
15+
Route,
16+
Routes,
17+
BrowserRouter as Router,
18+
Outlet,
19+
} from "react-router-dom"
1520
import { DashboardLayout } from "./components/Dashboard/DashboardLayout"
1621
import { RequireAuth } from "./components/RequireAuth/RequireAuth"
1722
import { SettingsLayout } from "./components/SettingsLayout/SettingsLayout"
1823
import { DeploySettingsLayout } from "components/DeploySettingsLayout/DeploySettingsLayout"
1924
import { TemplateSettingsLayout } from "pages/TemplateSettingsPage/TemplateSettingsLayout"
2025
import { WorkspaceSettingsLayout } from "pages/WorkspaceSettingsPage/WorkspaceSettingsLayout"
26+
import { DashboardProvider } from "components/Dashboard/DashboardProvider"
27+
import { ProxyProvider } from "contexts/ProxyContext"
2128

2229
// Lazy load pages
2330
// - Pages that are secondary, not in the main navigation or not usually accessed
@@ -170,129 +177,143 @@ export const AppRouter: FC = () => {
170177

171178
{/* Dashboard routes */}
172179
<Route element={<RequireAuth />}>
173-
<Route element={<DashboardLayout />}>
174-
<Route index element={<IndexPage />} />
180+
<Route element={<AuthenticatedProviders />}>
181+
<Route element={<DashboardLayout />}>
182+
<Route index element={<IndexPage />} />
175183

176-
<Route path="gitauth" element={<GitAuthPage />} />
184+
<Route path="gitauth" element={<GitAuthPage />} />
177185

178-
<Route path="workspaces" element={<WorkspacesPage />} />
186+
<Route path="workspaces" element={<WorkspacesPage />} />
179187

180-
<Route path="starter-templates">
181-
<Route index element={<StarterTemplatesPage />} />
182-
<Route path=":exampleId" element={<StarterTemplatePage />} />
183-
</Route>
188+
<Route path="starter-templates">
189+
<Route index element={<StarterTemplatesPage />} />
190+
<Route path=":exampleId" element={<StarterTemplatePage />} />
191+
</Route>
184192

185-
<Route path="templates">
186-
<Route index element={<TemplatesPage />} />
187-
<Route path="new" element={<CreateTemplatePage />} />
188-
<Route path=":template">
189-
<Route element={<TemplateLayout />}>
190-
<Route index element={<TemplateSummaryPage />} />
191-
<Route path="docs" element={<TemplateDocsPage />} />
192-
<Route path="files" element={<TemplateFilesPage />} />
193-
<Route path="versions" element={<TemplateVersionsPage />} />
194-
</Route>
193+
<Route path="templates">
194+
<Route index element={<TemplatesPage />} />
195+
<Route path="new" element={<CreateTemplatePage />} />
196+
<Route path=":template">
197+
<Route element={<TemplateLayout />}>
198+
<Route index element={<TemplateSummaryPage />} />
199+
<Route path="docs" element={<TemplateDocsPage />} />
200+
<Route path="files" element={<TemplateFilesPage />} />
201+
<Route
202+
path="versions"
203+
element={<TemplateVersionsPage />}
204+
/>
205+
</Route>
195206

196-
<Route path="workspace" element={<CreateWorkspacePage />} />
207+
<Route path="workspace" element={<CreateWorkspacePage />} />
197208

198-
<Route path="settings" element={<TemplateSettingsLayout />}>
199-
<Route index element={<TemplateSettingsPage />} />
200-
<Route
201-
path="permissions"
202-
element={<TemplatePermissionsPage />}
203-
/>
204-
<Route
205-
path="variables"
206-
element={<TemplateVariablesPage />}
207-
/>
208-
<Route path="schedule" element={<TemplateSchedulePage />} />
209-
</Route>
210-
211-
<Route path="versions">
212-
<Route path=":version">
213-
<Route index element={<TemplateVersionPage />} />
209+
<Route path="settings" element={<TemplateSettingsLayout />}>
210+
<Route index element={<TemplateSettingsPage />} />
214211
<Route
215-
path="edit"
216-
element={<TemplateVersionEditorPage />}
212+
path="permissions"
213+
element={<TemplatePermissionsPage />}
214+
/>
215+
<Route
216+
path="variables"
217+
element={<TemplateVariablesPage />}
218+
/>
219+
<Route
220+
path="schedule"
221+
element={<TemplateSchedulePage />}
217222
/>
218223
</Route>
219-
</Route>
220-
</Route>
221-
</Route>
222224

223-
<Route path="users">
224-
<Route element={<UsersLayout />}>
225-
<Route index element={<UsersPage />} />
225+
<Route path="versions">
226+
<Route path=":version">
227+
<Route index element={<TemplateVersionPage />} />
228+
<Route
229+
path="edit"
230+
element={<TemplateVersionEditorPage />}
231+
/>
232+
</Route>
233+
</Route>
234+
</Route>
226235
</Route>
227236

228-
<Route path="create" element={<CreateUserPage />} />
229-
</Route>
237+
<Route path="users">
238+
<Route element={<UsersLayout />}>
239+
<Route index element={<UsersPage />} />
240+
</Route>
230241

231-
<Route path="/groups">
232-
<Route element={<UsersLayout />}>
233-
<Route index element={<GroupsPage />} />
242+
<Route path="create" element={<CreateUserPage />} />
234243
</Route>
235244

236-
<Route path="create" element={<CreateGroupPage />} />
237-
<Route path=":groupId" element={<GroupPage />} />
238-
<Route
239-
path=":groupId/settings"
240-
element={<SettingsGroupPage />}
241-
/>
242-
</Route>
245+
<Route path="/groups">
246+
<Route element={<UsersLayout />}>
247+
<Route index element={<GroupsPage />} />
248+
</Route>
243249

244-
<Route path="/audit" element={<AuditPage />} />
250+
<Route path="create" element={<CreateGroupPage />} />
251+
<Route path=":groupId" element={<GroupPage />} />
252+
<Route
253+
path=":groupId/settings"
254+
element={<SettingsGroupPage />}
255+
/>
256+
</Route>
245257

246-
<Route
247-
path="/settings/deployment"
248-
element={<DeploySettingsLayout />}
249-
>
250-
<Route path="general" element={<GeneralSettingsPage />} />
251-
<Route path="security" element={<SecuritySettingsPage />} />
252-
<Route path="appearance" element={<AppearanceSettingsPage />} />
253-
<Route path="network" element={<NetworkSettingsPage />} />
254-
<Route path="userauth" element={<UserAuthSettingsPage />} />
255-
<Route path="gitauth" element={<GitAuthSettingsPage />} />
256-
</Route>
258+
<Route path="/audit" element={<AuditPage />} />
257259

258-
<Route path="settings" element={<SettingsLayout />}>
259-
<Route path="account" element={<AccountPage />} />
260-
<Route path="security" element={<SecurityPage />} />
261-
<Route path="ssh-keys" element={<SSHKeysPage />} />
262-
<Route path="tokens">
263-
<Route index element={<TokensPage />} />
264-
<Route path="new" element={<CreateTokenPage />} />
265-
</Route>
266260
<Route
267-
path="workspace-proxies"
268-
element={<WorkspaceProxyPage />}
269-
/>
270-
</Route>
261+
path="/settings/deployment"
262+
element={<DeploySettingsLayout />}
263+
>
264+
<Route path="general" element={<GeneralSettingsPage />} />
265+
<Route path="security" element={<SecuritySettingsPage />} />
266+
<Route
267+
path="appearance"
268+
element={<AppearanceSettingsPage />}
269+
/>
270+
<Route path="network" element={<NetworkSettingsPage />} />
271+
<Route path="userauth" element={<UserAuthSettingsPage />} />
272+
<Route path="gitauth" element={<GitAuthSettingsPage />} />
273+
</Route>
271274

272-
<Route path="/@:username">
273-
<Route path=":workspace">
274-
<Route index element={<WorkspacePage />} />
275+
<Route path="settings" element={<SettingsLayout />}>
276+
<Route path="account" element={<AccountPage />} />
277+
<Route path="security" element={<SecurityPage />} />
278+
<Route path="ssh-keys" element={<SSHKeysPage />} />
279+
<Route path="tokens">
280+
<Route index element={<TokensPage />} />
281+
<Route path="new" element={<CreateTokenPage />} />
282+
</Route>
275283
<Route
276-
path="builds/:buildNumber"
277-
element={<WorkspaceBuildPage />}
284+
path="workspace-proxies"
285+
element={<WorkspaceProxyPage />}
278286
/>
279-
<Route path="settings" element={<WorkspaceSettingsLayout />}>
280-
<Route index element={<WorkspaceSettingsPage />} />
287+
</Route>
288+
289+
<Route path="/@:username">
290+
<Route path=":workspace">
291+
<Route index element={<WorkspacePage />} />
281292
<Route
282-
path="schedule"
283-
element={<WorkspaceSchedulePage />}
293+
path="builds/:buildNumber"
294+
element={<WorkspaceBuildPage />}
284295
/>
296+
<Route
297+
path="settings"
298+
element={<WorkspaceSettingsLayout />}
299+
>
300+
<Route index element={<WorkspaceSettingsPage />} />
301+
<Route
302+
path="schedule"
303+
element={<WorkspaceSchedulePage />}
304+
/>
305+
</Route>
285306
</Route>
286307
</Route>
287308
</Route>
288-
</Route>
289309

290-
{/* Terminal and CLI auth pages don't have the dashboard layout */}
291-
<Route
292-
path="/@:username/:workspace/terminal"
293-
element={<TerminalPage />}
294-
/>
295-
<Route path="cli-auth" element={<CliAuthenticationPage />} />
310+
{/* Terminal and CLI auth pages don't have the dashboard layout */}
311+
<Route
312+
path="/@:username/:workspace/terminal"
313+
element={<TerminalPage />}
314+
/>
315+
<Route path="cli-auth" element={<CliAuthenticationPage />} />
316+
</Route>
296317
</Route>
297318

298319
{/* Using path="*"" means "match anything", so this route
@@ -304,3 +325,14 @@ export const AppRouter: FC = () => {
304325
</Suspense>
305326
)
306327
}
328+
329+
// AuthenticatedProviders are used
330+
export const AuthenticatedProviders: FC = () => {
331+
return (
332+
<DashboardProvider>
333+
<ProxyProvider>
334+
<Outlet />
335+
</ProxyProvider>
336+
</DashboardProvider>
337+
)
338+
}

site/src/app.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,8 @@ export const AppProviders: FC<PropsWithChildren> = ({ children }) => {
3131
<ErrorBoundary>
3232
<QueryClientProvider client={queryClient}>
3333
<AuthProvider>
34-
<DashboardProvider>
35-
<ProxyProvider>
36-
{children}
37-
<GlobalSnackbar />
38-
</ProxyProvider>
39-
</DashboardProvider>
34+
{children}
35+
<GlobalSnackbar />
4036
</AuthProvider>
4137
</QueryClientProvider>
4238
</ErrorBoundary>

site/src/contexts/ProxyContext.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ const getURLs = (
148148
regions: Region[],
149149
selectedRegion?: Region,
150150
): PreferredProxy => {
151-
// By default we set the path app to relative and disable wilcard hostnames.
151+
// By default we set the path app to relative and disable wildcard hostnames.
152152
// We will set these values if we find a proxy we can use that supports them.
153153
let pathAppURL = ""
154154
let wildcardHostname = ""

site/src/pages/UserSettingsPage/WorkspaceProxyPage/hooks.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import { getWorkspaceProxies } from "api/api"
33

44
// Loads all workspace proxies
55
export const useWorkspaceProxiesData = () => {
6+
const queryKey = ["workspace-proxies"]
67
const result = useQuery({
8+
queryKey,
79
queryFn: () => getWorkspaceProxies(),
810
})
911

site/src/testHelpers/entities.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export const MockTokens: TypesGen.APIKeyWithOwner[] = [
6868
},
6969
]
7070

71-
export const MockRegion: TypesGen.Region = {
71+
export const MockPrimaryRegion: TypesGen.Region = {
7272
id: "4aa23000-526a-481f-a007-0f20b98b1e12",
7373
name: "primary",
7474
display_name: "Default",
@@ -79,7 +79,7 @@ export const MockRegion: TypesGen.Region = {
7979
}
8080

8181
export const MockRegions: TypesGen.Region[] = [
82-
MockRegion,
82+
MockPrimaryRegion,
8383
{
8484
id: "8444931c-0247-4171-842a-569d9f9cbadb",
8585
name: "unhealthy",
@@ -103,6 +103,8 @@ export const MockRegions: TypesGen.Region[] = [
103103
export const MockBuildInfo: TypesGen.BuildInfoResponse = {
104104
external_url: "file:///mock-url",
105105
version: "v99.999.9999+c9cdf14",
106+
dashboard_url: "https:///mock-url",
107+
workspace_proxy: false,
106108
}
107109

108110
export const MockSupportLinks: TypesGen.LinkConfig[] = [

site/src/testHelpers/handlers.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@ export const handlers = [
1515
rest.get("/api/v2/insights/daus", async (req, res, ctx) => {
1616
return res(ctx.status(200), ctx.json(M.MockDeploymentDAUResponse))
1717
}),
18-
18+
// Workspace proxies
19+
rest.get("/api/v2/regions", async (req, res, ctx) => {
20+
console.log("Hit mocked regions!!!!")
21+
return res(
22+
ctx.status(200),
23+
ctx.json({
24+
regions: M.MockRegions,
25+
}),
26+
)
27+
}),
1928
// build info
2029
rest.get("/api/v2/buildinfo", async (req, res, ctx) => {
2130
return res(ctx.status(200), ctx.json(M.MockBuildInfo))

site/src/testHelpers/renderHelpers.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import {
1919
RouteObject,
2020
} from "react-router-dom"
2121
import { RequireAuth } from "../components/RequireAuth/RequireAuth"
22-
import { MockUser } from "./entities"
2322

2423
export const history = createMemoryHistory()
2524

site/vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export default defineConfig({
4949
api: path.resolve(__dirname, "./src/api"),
5050
components: path.resolve(__dirname, "./src/components"),
5151
hooks: path.resolve(__dirname, "./src/hooks"),
52+
contexts: path.resolve(__dirname, "./src/contexts"),
5253
i18n: path.resolve(__dirname, "./src/i18n"),
5354
pages: path.resolve(__dirname, "./src/pages"),
5455
testHelpers: path.resolve(__dirname, "./src/testHelpers"),

0 commit comments

Comments
 (0)