Add files via upload

This commit is contained in:
Egor
2026-01-15 19:18:17 +03:00
committed by GitHub
parent b118008cdc
commit 7be6b5c0ae
70 changed files with 21835 additions and 0 deletions

227
src/App.tsx Normal file
View File

@@ -0,0 +1,227 @@
import { Routes, Route, Navigate } from 'react-router-dom'
import { useAuthStore } from './store/auth'
import Layout from './components/layout/Layout'
import PageLoader from './components/common/PageLoader'
import Login from './pages/Login'
import TelegramCallback from './pages/TelegramCallback'
import TelegramRedirect from './pages/TelegramRedirect'
import DeepLinkRedirect from './pages/DeepLinkRedirect'
import Dashboard from './pages/Dashboard'
import Subscription from './pages/Subscription'
import Balance from './pages/Balance'
import Referral from './pages/Referral'
import Support from './pages/Support'
import Profile from './pages/Profile'
import AdminTickets from './pages/AdminTickets'
import AdminSettings from './pages/AdminSettings'
import AdminApps from './pages/AdminApps'
import VerifyEmail from './pages/VerifyEmail'
import Contests from './pages/Contests'
import Polls from './pages/Polls'
import Info from './pages/Info'
import Wheel from './pages/Wheel'
import AdminWheel from './pages/AdminWheel'
import AdminTariffs from './pages/AdminTariffs'
import AdminServers from './pages/AdminServers'
import AdminPanel from './pages/AdminPanel'
import AdminDashboard from './pages/AdminDashboard'
function ProtectedRoute({ children }: { children: React.ReactNode }) {
const { isAuthenticated, isLoading } = useAuthStore()
if (isLoading) {
return <PageLoader variant="dark" />
}
if (!isAuthenticated) {
return <Navigate to="/login" replace />
}
return <Layout>{children}</Layout>
}
function AdminRoute({ children }: { children: React.ReactNode }) {
const { isAuthenticated, isLoading, isAdmin } = useAuthStore()
if (isLoading) {
return <PageLoader variant="light" />
}
if (!isAuthenticated) {
return <Navigate to="/login" replace />
}
if (!isAdmin) {
return <Navigate to="/" replace />
}
return <Layout>{children}</Layout>
}
function App() {
return (
<Routes>
{/* Public routes */}
<Route path="/login" element={<Login />} />
<Route path="/auth/telegram/callback" element={<TelegramCallback />} />
<Route path="/auth/telegram" element={<TelegramRedirect />} />
<Route path="/tg" element={<TelegramRedirect />} />
<Route path="/connect" element={<DeepLinkRedirect />} />
<Route path="/add" element={<DeepLinkRedirect />} />
<Route path="/verify-email" element={<VerifyEmail />} />
{/* Protected routes */}
<Route
path="/"
element={
<ProtectedRoute>
<Dashboard />
</ProtectedRoute>
}
/>
<Route
path="/subscription"
element={
<ProtectedRoute>
<Subscription />
</ProtectedRoute>
}
/>
<Route
path="/balance"
element={
<ProtectedRoute>
<Balance />
</ProtectedRoute>
}
/>
<Route
path="/referral"
element={
<ProtectedRoute>
<Referral />
</ProtectedRoute>
}
/>
<Route
path="/support"
element={
<ProtectedRoute>
<Support />
</ProtectedRoute>
}
/>
<Route
path="/profile"
element={
<ProtectedRoute>
<Profile />
</ProtectedRoute>
}
/>
<Route
path="/contests"
element={
<ProtectedRoute>
<Contests />
</ProtectedRoute>
}
/>
<Route
path="/polls"
element={
<ProtectedRoute>
<Polls />
</ProtectedRoute>
}
/>
<Route
path="/info"
element={
<ProtectedRoute>
<Info />
</ProtectedRoute>
}
/>
<Route
path="/wheel"
element={
<ProtectedRoute>
<Wheel />
</ProtectedRoute>
}
/>
{/* Admin routes */}
<Route
path="/admin"
element={
<AdminRoute>
<AdminPanel />
</AdminRoute>
}
/>
<Route
path="/admin/tickets"
element={
<AdminRoute>
<AdminTickets />
</AdminRoute>
}
/>
<Route
path="/admin/settings"
element={
<AdminRoute>
<AdminSettings />
</AdminRoute>
}
/>
<Route
path="/admin/apps"
element={
<AdminRoute>
<AdminApps />
</AdminRoute>
}
/>
<Route
path="/admin/wheel"
element={
<AdminRoute>
<AdminWheel />
</AdminRoute>
}
/>
<Route
path="/admin/tariffs"
element={
<AdminRoute>
<AdminTariffs />
</AdminRoute>
}
/>
<Route
path="/admin/servers"
element={
<AdminRoute>
<AdminServers />
</AdminRoute>
}
/>
<Route
path="/admin/dashboard"
element={
<AdminRoute>
<AdminDashboard />
</AdminRoute>
}
/>
{/* Catch all */}
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
)
}
export default App