feat(web): ProtectedRoute extraído + router migrado + CreateUserPage cleanup [UDT-006]

This commit is contained in:
2026-04-15 16:41:39 -03:00
parent 8935115da9
commit f6cdd7650b
4 changed files with 339 additions and 21 deletions

View File

@@ -1,5 +1,6 @@
import { Navigate, Route, Routes } from 'react-router-dom'
import { useAuthStore } from './stores/authStore'
import { ProtectedRoute } from './components/routing/ProtectedRoute'
import { LoginPage } from './features/auth/pages/LoginPage'
import { CreateUserPage } from './features/users/pages/CreateUserPage'
import { RolesPage } from './features/roles/pages/RolesPage'
@@ -10,14 +11,6 @@ import { HomePage } from './pages/HomePage'
import { PublicLayout } from './layouts/PublicLayout'
import { ProtectedLayout } from './layouts/ProtectedLayout'
function ProtectedRoute({ children }: { children: React.ReactNode }) {
const user = useAuthStore((s) => s.user)
if (!user) {
return <Navigate to="/login" replace />
}
return <>{children}</>
}
function PublicRoute({ children }: { children: React.ReactNode }) {
const user = useAuthStore((s) => s.user)
if (user) {
@@ -52,7 +45,7 @@ export function AppRoutes() {
<Route
path="/usuarios/nuevo"
element={
<ProtectedRoute>
<ProtectedRoute requiredPermissions={['administracion:usuarios:gestionar']}>
<ProtectedLayout>
<CreateUserPage />
</ProtectedLayout>
@@ -62,7 +55,7 @@ export function AppRoutes() {
<Route
path="/admin/roles"
element={
<ProtectedRoute>
<ProtectedRoute requiredPermissions={['administracion:roles:gestionar']}>
<ProtectedLayout>
<RolesPage />
</ProtectedLayout>
@@ -72,7 +65,7 @@ export function AppRoutes() {
<Route
path="/admin/roles/nuevo"
element={
<ProtectedRoute>
<ProtectedRoute requiredPermissions={['administracion:roles:gestionar']}>
<ProtectedLayout>
<NewRolPage />
</ProtectedLayout>
@@ -82,7 +75,7 @@ export function AppRoutes() {
<Route
path="/admin/roles/:codigo/editar"
element={
<ProtectedRoute>
<ProtectedRoute requiredPermissions={['administracion:roles:gestionar']}>
<ProtectedLayout>
<EditRolPage />
</ProtectedLayout>
@@ -92,7 +85,12 @@ export function AppRoutes() {
<Route
path="/admin/permisos"
element={
<ProtectedRoute>
<ProtectedRoute
requiredPermissions={[
'administracion:roles_permisos:gestionar',
'administracion:permisos:ver',
]}
>
<ProtectedLayout>
<RolPermisosPage />
</ProtectedLayout>