Первоначальная версия VidConf
This commit is contained in:
79
frontend/src/App.tsx
Normal file
79
frontend/src/App.tsx
Normal file
@@ -0,0 +1,79 @@
|
||||
import { Navigate, Route, Routes } from 'react-router-dom'
|
||||
import { LoginPage } from '@/pages/LoginPage'
|
||||
import { RegisterPage } from '@/pages/RegisterPage'
|
||||
import { VerifyEmailPage } from '@/pages/VerifyEmailPage'
|
||||
import { LobbyPage } from '@/pages/LobbyPage'
|
||||
import { JoinPage } from '@/pages/JoinPage'
|
||||
import { RoomPage } from '@/pages/RoomPage'
|
||||
import { CalendarPage } from '@/pages/CalendarPage'
|
||||
import { MyConferencesPage } from '@/pages/MyConferencesPage'
|
||||
import { ProfilePage } from '@/pages/ProfilePage'
|
||||
import { AdminPage } from '@/pages/AdminPage'
|
||||
import { RequireAuth } from '@/auth/RequireAuth'
|
||||
import { RequireAdmin } from '@/auth/RequireAdmin'
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<Routes>
|
||||
<Route path="/" element={<Navigate to="/lobby" replace />} />
|
||||
<Route path="/login" element={<LoginPage />} />
|
||||
<Route path="/register" element={<RegisterPage />} />
|
||||
<Route path="/verify-email" element={<VerifyEmailPage />} />
|
||||
<Route
|
||||
path="/lobby"
|
||||
element={
|
||||
<RequireAuth>
|
||||
<LobbyPage />
|
||||
</RequireAuth>
|
||||
}
|
||||
/>
|
||||
{/* Подключение по ссылке/номеру — публичное: доступно и гостю без аккаунта. */}
|
||||
<Route path="/join" element={<JoinPage />} />
|
||||
<Route path="/j/:slug" element={<JoinPage />} />
|
||||
{/*
|
||||
* Комната конференции — тоже публичная: гость подключается по токену,
|
||||
* переданному через navigation state из JoinPage (без JWT-сессии
|
||||
* приложения). Авторизация внутри самой страницы не требуется — см.
|
||||
* комментарий в RoomPage.tsx.
|
||||
*/}
|
||||
<Route path="/room/:slug" element={<RoomPage />} />
|
||||
<Route
|
||||
path="/calendar"
|
||||
element={
|
||||
<RequireAuth>
|
||||
<CalendarPage />
|
||||
</RequireAuth>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/my-conferences"
|
||||
element={
|
||||
<RequireAuth>
|
||||
<MyConferencesPage />
|
||||
</RequireAuth>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/profile"
|
||||
element={
|
||||
<RequireAuth>
|
||||
<ProfilePage />
|
||||
</RequireAuth>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/admin"
|
||||
element={
|
||||
<RequireAuth>
|
||||
<RequireAdmin>
|
||||
<AdminPage />
|
||||
</RequireAdmin>
|
||||
</RequireAuth>
|
||||
}
|
||||
/>
|
||||
<Route path="*" element={<Navigate to="/lobby" replace />} />
|
||||
</Routes>
|
||||
)
|
||||
}
|
||||
|
||||
export default App
|
||||
Reference in New Issue
Block a user