Skip to content

Commit eb38e95

Browse files
committed
Move providers into requrie auth
1 parent 27ef4a9 commit eb38e95

File tree

3 files changed

+125
-146
lines changed

3 files changed

+125
-146
lines changed

site/src/AppRouter.tsx

Lines changed: 108 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -188,145 +188,143 @@ export const AppRouter: FC = () => {
188188

189189
{/* Dashboard routes */}
190190
<Route element={<RequireAuth />}>
191-
<Route element={<AuthenticatedProviders />}>
192-
<Route element={<DashboardLayout />}>
193-
<Route index element={<IndexPage />} />
191+
<Route element={<DashboardLayout />}>
192+
<Route index element={<IndexPage />} />
194193

195-
<Route path="gitauth" element={<GitAuthPage />} />
194+
<Route path="gitauth" element={<GitAuthPage />} />
196195

197-
<Route path="workspaces" element={<WorkspacesPage />} />
196+
<Route path="workspaces" element={<WorkspacesPage />} />
198197

199-
<Route path="starter-templates">
200-
<Route index element={<StarterTemplatesPage />} />
201-
<Route path=":exampleId" element={<StarterTemplatePage />} />
202-
</Route>
198+
<Route path="starter-templates">
199+
<Route index element={<StarterTemplatesPage />} />
200+
<Route path=":exampleId" element={<StarterTemplatePage />} />
201+
</Route>
203202

204-
<Route path="templates">
205-
<Route index element={<TemplatesPage />} />
206-
<Route path="new" element={<CreateTemplatePage />} />
207-
<Route path=":template">
208-
<Route element={<TemplateLayout />}>
209-
<Route index element={<TemplateSummaryPage />} />
210-
<Route path="docs" element={<TemplateDocsPage />} />
211-
<Route path="files" element={<TemplateFilesPage />} />
212-
<Route
213-
path="versions"
214-
element={<TemplateVersionsPage />}
215-
/>
216-
</Route>
203+
<Route path="templates">
204+
<Route index element={<TemplatesPage />} />
205+
<Route path="new" element={<CreateTemplatePage />} />
206+
<Route path=":template">
207+
<Route element={<TemplateLayout />}>
208+
<Route index element={<TemplateSummaryPage />} />
209+
<Route path="docs" element={<TemplateDocsPage />} />
210+
<Route path="files" element={<TemplateFilesPage />} />
211+
<Route
212+
path="versions"
213+
element={<TemplateVersionsPage />}
214+
/>
215+
</Route>
217216

218-
<Route path="workspace" element={<CreateWorkspacePage />} />
217+
<Route path="workspace" element={<CreateWorkspacePage />} />
219218

220-
<Route path="settings" element={<TemplateSettingsLayout />}>
221-
<Route index element={<TemplateSettingsPage />} />
222-
<Route
223-
path="permissions"
224-
element={<TemplatePermissionsPage />}
225-
/>
226-
<Route
227-
path="variables"
228-
element={<TemplateVariablesPage />}
229-
/>
219+
<Route path="settings" element={<TemplateSettingsLayout />}>
220+
<Route index element={<TemplateSettingsPage />} />
221+
<Route
222+
path="permissions"
223+
element={<TemplatePermissionsPage />}
224+
/>
225+
<Route
226+
path="variables"
227+
element={<TemplateVariablesPage />}
228+
/>
229+
<Route
230+
path="schedule"
231+
element={<TemplateSchedulePage />}
232+
/>
233+
</Route>
234+
235+
<Route path="versions">
236+
<Route path=":version">
237+
<Route index element={<TemplateVersionPage />} />
230238
<Route
231-
path="schedule"
232-
element={<TemplateSchedulePage />}
239+
path="edit"
240+
element={<TemplateVersionEditorPage />}
233241
/>
234242
</Route>
235-
236-
<Route path="versions">
237-
<Route path=":version">
238-
<Route index element={<TemplateVersionPage />} />
239-
<Route
240-
path="edit"
241-
element={<TemplateVersionEditorPage />}
242-
/>
243-
</Route>
244-
</Route>
245243
</Route>
246244
</Route>
245+
</Route>
247246

248-
<Route path="users">
249-
<Route element={<UsersLayout />}>
250-
<Route index element={<UsersPage />} />
251-
</Route>
252-
253-
<Route path="create" element={<CreateUserPage />} />
247+
<Route path="users">
248+
<Route element={<UsersLayout />}>
249+
<Route index element={<UsersPage />} />
254250
</Route>
255251

256-
<Route path="/groups">
257-
<Route element={<UsersLayout />}>
258-
<Route index element={<GroupsPage />} />
259-
</Route>
252+
<Route path="create" element={<CreateUserPage />} />
253+
</Route>
260254

261-
<Route path="create" element={<CreateGroupPage />} />
262-
<Route path=":groupId" element={<GroupPage />} />
263-
<Route
264-
path=":groupId/settings"
265-
element={<SettingsGroupPage />}
266-
/>
255+
<Route path="/groups">
256+
<Route element={<UsersLayout />}>
257+
<Route index element={<GroupsPage />} />
267258
</Route>
268259

269-
<Route path="/audit" element={<AuditPage />} />
260+
<Route path="create" element={<CreateGroupPage />} />
261+
<Route path=":groupId" element={<GroupPage />} />
262+
<Route
263+
path=":groupId/settings"
264+
element={<SettingsGroupPage />}
265+
/>
266+
</Route>
270267

268+
<Route path="/audit" element={<AuditPage />} />
269+
270+
<Route
271+
path="/settings/deployment"
272+
element={<DeploySettingsLayout />}
273+
>
274+
<Route path="general" element={<GeneralSettingsPage />} />
275+
<Route path="licenses" element={<LicensesSettingsPage />} />
276+
<Route path="licenses/add" element={<AddNewLicensePage />} />
277+
<Route path="security" element={<SecuritySettingsPage />} />
271278
<Route
272-
path="/settings/deployment"
273-
element={<DeploySettingsLayout />}
274-
>
275-
<Route path="general" element={<GeneralSettingsPage />} />
276-
<Route path="licenses" element={<LicensesSettingsPage />} />
277-
<Route path="licenses/add" element={<AddNewLicensePage />} />
278-
<Route path="security" element={<SecuritySettingsPage />} />
279-
<Route
280-
path="appearance"
281-
element={<AppearanceSettingsPage />}
282-
/>
283-
<Route path="network" element={<NetworkSettingsPage />} />
284-
<Route path="userauth" element={<UserAuthSettingsPage />} />
285-
<Route path="gitauth" element={<GitAuthSettingsPage />} />
279+
path="appearance"
280+
element={<AppearanceSettingsPage />}
281+
/>
282+
<Route path="network" element={<NetworkSettingsPage />} />
283+
<Route path="userauth" element={<UserAuthSettingsPage />} />
284+
<Route path="gitauth" element={<GitAuthSettingsPage />} />
285+
</Route>
286+
287+
<Route path="settings" element={<SettingsLayout />}>
288+
<Route path="account" element={<AccountPage />} />
289+
<Route path="security" element={<SecurityPage />} />
290+
<Route path="ssh-keys" element={<SSHKeysPage />} />
291+
<Route path="tokens">
292+
<Route index element={<TokensPage />} />
293+
<Route path="new" element={<CreateTokenPage />} />
286294
</Route>
295+
<Route
296+
path="workspace-proxies"
297+
element={<WorkspaceProxyPage />}
298+
/>
299+
</Route>
287300

288-
<Route path="settings" element={<SettingsLayout />}>
289-
<Route path="account" element={<AccountPage />} />
290-
<Route path="security" element={<SecurityPage />} />
291-
<Route path="ssh-keys" element={<SSHKeysPage />} />
292-
<Route path="tokens">
293-
<Route index element={<TokensPage />} />
294-
<Route path="new" element={<CreateTokenPage />} />
295-
</Route>
301+
<Route path="/@:username">
302+
<Route path=":workspace">
303+
<Route index element={<WorkspacePage />} />
296304
<Route
297-
path="workspace-proxies"
298-
element={<WorkspaceProxyPage />}
305+
path="builds/:buildNumber"
306+
element={<WorkspaceBuildPage />}
299307
/>
300-
</Route>
301-
302-
<Route path="/@:username">
303-
<Route path=":workspace">
304-
<Route index element={<WorkspacePage />} />
308+
<Route
309+
path="settings"
310+
element={<WorkspaceSettingsLayout />}
311+
>
312+
<Route index element={<WorkspaceSettingsPage />} />
305313
<Route
306-
path="builds/:buildNumber"
307-
element={<WorkspaceBuildPage />}
314+
path="schedule"
315+
element={<WorkspaceSchedulePage />}
308316
/>
309-
<Route
310-
path="settings"
311-
element={<WorkspaceSettingsLayout />}
312-
>
313-
<Route index element={<WorkspaceSettingsPage />} />
314-
<Route
315-
path="schedule"
316-
element={<WorkspaceSchedulePage />}
317-
/>
318-
</Route>
319317
</Route>
320318
</Route>
321319
</Route>
322-
323-
{/* Terminal and CLI auth pages don't have the dashboard layout */}
324-
<Route
325-
path="/@:username/:workspace/terminal"
326-
element={<TerminalPage />}
327-
/>
328-
<Route path="cli-auth" element={<CliAuthenticationPage />} />
329320
</Route>
321+
322+
{/* Terminal and CLI auth pages don't have the dashboard layout */}
323+
<Route
324+
path="/@:username/:workspace/terminal"
325+
element={<TerminalPage />}
326+
/>
327+
<Route path="cli-auth" element={<CliAuthenticationPage />} />
330328
</Route>
331329

332330
{/* Using path="*"" means "match anything", so this route
@@ -338,14 +336,3 @@ export const AppRouter: FC = () => {
338336
</Suspense>
339337
)
340338
}
341-
342-
// AuthenticatedProviders are used to provide authenticated contexts to children
343-
export const AuthenticatedProviders: FC = () => {
344-
return (
345-
<DashboardProvider>
346-
<ProxyProvider>
347-
<Outlet />
348-
</ProxyProvider>
349-
</DashboardProvider>
350-
)
351-
}

site/src/components/RequireAuth/RequireAuth.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { Navigate, useLocation } from "react-router"
44
import { Outlet } from "react-router-dom"
55
import { embedRedirect } from "../../utils/redirect"
66
import { FullScreenLoader } from "../Loader/FullScreenLoader"
7+
import { DashboardProvider } from "components/Dashboard/DashboardProvider"
8+
import { ProxyProvider } from "contexts/ProxyContext"
79

810
export const RequireAuth: FC = () => {
911
const [authState] = useAuth()
@@ -21,6 +23,12 @@ export const RequireAuth: FC = () => {
2123
) {
2224
return <FullScreenLoader />
2325
} else {
24-
return <Outlet />
26+
// Authenticated pages have access to some contexts for knowing enabled experiments
27+
// and where to route workspace connections.
28+
return <DashboardProvider>
29+
<ProxyProvider>
30+
<Outlet />
31+
</ProxyProvider>
32+
</DashboardProvider>
2533
}
2634
}

site/src/testHelpers/renderHelpers.tsx

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import {
2020
} from "react-router-dom"
2121
import { RequireAuth } from "../components/RequireAuth/RequireAuth"
2222
import { MockUser } from "./entities"
23-
import { AuthenticatedProviders } from "AppRouter"
2423

2524
export const history = createMemoryHistory()
2625

@@ -64,13 +63,8 @@ export function renderWithAuth(
6463
element: <RequireAuth />,
6564
children: [
6665
{
67-
element: <AuthenticatedProviders />,
68-
children: [
69-
{
70-
element: <DashboardLayout />,
71-
children: [{ path, element }, ...extraRoutes],
72-
},
73-
],
66+
element: <DashboardLayout />,
67+
children: [{ path, element }, ...extraRoutes],
7468
},
7569
],
7670
},
@@ -108,16 +102,11 @@ export function renderWithTemplateSettingsLayout(
108102
element: <RequireAuth />,
109103
children: [
110104
{
111-
element: <AuthenticatedProviders />,
105+
element: <DashboardLayout />,
112106
children: [
113107
{
114-
element: <DashboardLayout />,
115-
children: [
116-
{
117-
element: <TemplateSettingsLayout />,
118-
children: [{ path, element }, ...extraRoutes],
119-
},
120-
],
108+
element: <TemplateSettingsLayout />,
109+
children: [{ path, element }, ...extraRoutes],
121110
},
122111
],
123112
},
@@ -157,16 +146,11 @@ export function renderWithWorkspaceSettingsLayout(
157146
element: <RequireAuth />,
158147
children: [
159148
{
160-
element: <AuthenticatedProviders />,
149+
element: <DashboardLayout />,
161150
children: [
162151
{
163-
element: <DashboardLayout />,
164-
children: [
165-
{
166-
element: <WorkspaceSettingsLayout />,
167-
children: [{ path, element }, ...extraRoutes],
168-
},
169-
],
152+
element: <WorkspaceSettingsLayout />,
153+
children: [{ path, element }, ...extraRoutes],
170154
},
171155
],
172156
},

0 commit comments

Comments
 (0)