-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathApp.tsx
More file actions
158 lines (146 loc) · 5.1 KB
/
App.tsx
File metadata and controls
158 lines (146 loc) · 5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import { Auth0Provider, useAuth0 } from '@auth0/auth0-react';
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import React from 'react';
// import { useTranslation } from 'react-i18next';
import Header from './components/Header';
import { Routes, Route, BrowserRouter, Navigate } from './components/RouterCompat';
import { Sidebar } from './components/side-bar';
import { config } from './config/env';
// import { useDarkMode } from './hooks/use-dark-mode';
import DomainManagement from './pages/DomainManagement';
import MemberManagement from './pages/MemberManagement';
import IdentityProviderManagement from './pages/IdentityProviderManagement';
import IdentityProviderManagementCreate from './pages/IdentityProviderManagementCreate';
import IdentityProviderManagementEdit from './pages/IdentityProviderManagementEdit';
import Index from './pages/Index';
import MFAManagement from './pages/MFAManagement';
import OrganizationManagement from './pages/OrganizationManagement';
import Profile from './pages/Profile';
// import { Auth0ComponentProvider } from '@/providers/spa-provider';
const queryClient = new QueryClient();
// Protected Route wrapper
const ProtectedRoute = ({ children }: { children: React.ReactNode }) => {
const { isAuthenticated, isLoading } = useAuth0();
if (isLoading) {
return (
<div className="min-h-screen flex items-center justify-center">
<div className="text-gray-600">Loading...</div>
</div>
);
}
if (!isAuthenticated) {
return <Navigate to="/" replace />;
}
return <>{children}</>;
};
// Layout component with conditional sidebar
const AppLayout = ({ children }: { children: React.ReactNode }) => {
const { isAuthenticated } = useAuth0();
return (
<div className="min-h-screen bg-background text-foreground" data-theme="default">
<Header />
{isAuthenticated && <Sidebar />}
<div className={isAuthenticated ? 'ml-64' : ''}>{children}</div>
</div>
);
};
const App = () => {
// const { i18n } = useTranslation();
// const isDarkMode = useDarkMode();
return (
<QueryClientProvider client={queryClient}>
<TooltipPrimitive.Provider>
<BrowserRouter>
<Auth0Provider
domain={config.auth0.domain}
clientId={config.auth0.clientId}
authorizationParams={{
redirect_uri: window.location.origin,
scope: 'offline_access openid profile email',
}}
cacheLocation="localstorage"
useRefreshTokens={true}
useMrrt={true}
>
{/* <Auth0ComponentProvider
i18n={{ currentLanguage: i18n.language }}
themeSettings={{mode: isDarkMode ? 'dark' : 'light'}}
> */}
<AppLayout>
<Routes>
<Route path="/" element={<Index />} />
<Route
path="/profile"
element={
<ProtectedRoute>
<Profile />
</ProtectedRoute>
}
/>
<Route
path="/mfa"
element={
<ProtectedRoute>
<MFAManagement />
</ProtectedRoute>
}
/>
<Route
path="/organization-management"
element={
<ProtectedRoute>
<OrganizationManagement />
</ProtectedRoute>
}
/>
<Route
path="/idp-management"
element={
<ProtectedRoute>
<IdentityProviderManagement />
</ProtectedRoute>
}
/>
<Route
path="/idp-management/create"
element={
<ProtectedRoute>
<IdentityProviderManagementCreate />
</ProtectedRoute>
}
/>
<Route
path="/idp-management/edit/:id"
element={
<ProtectedRoute>
<IdentityProviderManagementEdit />
</ProtectedRoute>
}
/>
<Route
path="/domain-management"
element={
<ProtectedRoute>
<DomainManagement />
</ProtectedRoute>
}
/>
<Route
path="/member-management"
element={
<ProtectedRoute>
<MemberManagement />
</ProtectedRoute>
}
/>
</Routes>
</AppLayout>
{/* </Auth0ComponentProvider> */}
</Auth0Provider>
</BrowserRouter>
</TooltipPrimitive.Provider>
</QueryClientProvider>
);
};
export default App;