- Modelo Usuario + seed desde lista de vendedores (18 usuarios, bcrypt cost 12) - POST /api/auth/login + /api/auth/me; middleware Bearer en todo /api excepto health, login y webhook Monday; flag AUTH_ENABLED - Username = nombre completo normalizado (case/acentos insensible), password inicial Frasa2026, admin vía ADMIN_PASSWORD - Apps: LoginScreen + AuthGate (StudioBlank), token en localStorage, header Authorization en todas las llamadas, logout en 401 - Tests: api 136, cotizador 71, alta 65, cobranza 71, agente-ia 13, landing 4
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { StrictMode } from 'react'
|
|
import { createRoot } from 'react-dom/client'
|
|
import { BrowserRouter, Route, Routes } from 'react-router-dom'
|
|
import '@fontsource/inter/300.css'
|
|
import '@fontsource/inter/400.css'
|
|
import '@fontsource/inter/500.css'
|
|
import '@fontsource/inter/700.css'
|
|
import './index.css'
|
|
import Layout from './components/Layout'
|
|
import AuthGate from './components/AuthGate'
|
|
import DashboardPage from './pages/DashboardPage'
|
|
import HoyPage from './pages/HoyPage'
|
|
import PlanDetallePage from './pages/PlanDetallePage'
|
|
import NuevoPlanPage from './pages/NuevoPlanPage'
|
|
|
|
createRoot(document.getElementById('root')!).render(
|
|
<StrictMode>
|
|
<BrowserRouter basename="/pay">
|
|
<AuthGate>
|
|
<Layout>
|
|
<Routes>
|
|
<Route path="/" element={<DashboardPage />} />
|
|
<Route path="/hoy" element={<HoyPage />} />
|
|
<Route path="/planes/:id" element={<PlanDetallePage />} />
|
|
<Route path="/nuevo" element={<NuevoPlanPage />} />
|
|
<Route path="*" element={<DashboardPage />} />
|
|
</Routes>
|
|
</Layout>
|
|
</AuthGate>
|
|
</BrowserRouter>
|
|
</StrictMode>,
|
|
)
|