945b18ab3e
- Implemented Issue #9: User Authentication & Authorization - Added User model fields (FailedLoginAttempts, LockedUntil, LastLogin) - Created AuthService with JWT support, bcrypt hashing, and account lockout - Added AuthMiddleware and AuthHandler - Registered auth routes in backend - Created AuthContext and RequireAuth component in frontend - Implemented Login page and integrated with backend - Fixed 'Blank Page' issue in local Docker environment - Added QueryClientProvider to main.tsx - Installed missing lucide-react dependency - Fixed TypeScript linting errors in SetupGuard.tsx - Updated docker-entrypoint.sh to use 127.0.0.1 for reliable Caddy checks - Verified with local Docker build
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { BrowserRouter as Router, Routes, Route, Outlet } from 'react-router-dom'
|
|
import Layout from './components/Layout'
|
|
import { ToastContainer } from './components/Toast'
|
|
import { SetupGuard } from './components/SetupGuard'
|
|
import RequireAuth from './components/RequireAuth'
|
|
import { AuthProvider } from './context/AuthContext'
|
|
import Dashboard from './pages/Dashboard'
|
|
import ProxyHosts from './pages/ProxyHosts'
|
|
import RemoteServers from './pages/RemoteServers'
|
|
import ImportCaddy from './pages/ImportCaddy'
|
|
import Certificates from './pages/Certificates'
|
|
import Settings from './pages/Settings'
|
|
import Login from './pages/Login'
|
|
import Setup from './pages/Setup'
|
|
|
|
export default function App() {
|
|
return (
|
|
<AuthProvider>
|
|
<Router>
|
|
<Routes>
|
|
<Route path="/login" element={<Login />} />
|
|
<Route path="/setup" element={<Setup />} />
|
|
<Route path="/" element={
|
|
<SetupGuard>
|
|
<RequireAuth>
|
|
<Layout>
|
|
<Outlet />
|
|
</Layout>
|
|
</RequireAuth>
|
|
</SetupGuard>
|
|
}>
|
|
<Route index element={<Dashboard />} />
|
|
<Route path="proxy-hosts" element={<ProxyHosts />} />
|
|
<Route path="remote-servers" element={<RemoteServers />} />
|
|
<Route path="certificates" element={<Certificates />} />
|
|
<Route path="import" element={<ImportCaddy />} />
|
|
<Route path="settings" element={<Settings />} />
|
|
</Route>
|
|
</Routes>
|
|
<ToastContainer />
|
|
</Router>
|
|
</AuthProvider>
|
|
)
|
|
}
|