Contenido del curso
Introducción a React Router DOM 6
- 4

Instalar React Router Dom 6 paso a paso
11:18 min - 5

Browser Router vs Hash Router en GitHub Pages
07:25 min - 6

Primeras rutas con React Router Dom 6
10:41 min - 7

Link y NavLink para navegación en React
13:18 min - 8

Rutas dinámicas con React Router DOM y useParams
15:36 min - 9

useNavigate para navegar con JavaScript
08:56 min - 10

Outlet y rutas anidadas en React Router
06:56 min
Fake authentication con React Router DOM 6
- 11

Rutas privadas con fake auth en React
23:48 min - 12

Rutas privadas y públicas en React
09:50 min - 13

Rutas protegidas con Navigate en React
13:45 min - 14

Roles y permisos en aplicaciones web: Autenticación y autorización
Viendo ahora - 15

Retos avanzados en React: manejo de estado y composición de componentes
08:21 min - 16

Redirect al login con useLocation en React
03:42 min - 17

Rutas dinámicas con roles de usuario
04:56 min
React Router en TODO Machine
- 18

Cómo migrar React portals a rutas reales
11:33 min - 19

Estructura de carpetas con React Router Dom 6
18:40 min - 20

Botón de editar todos con React y SVG
12:19 min - 21

Generación de IDs únicos para gestionar tareas en React
15:22 min - 22

Migrar modales a rutas con useNavigate
17:36 min - 23

Cómo funciona editTodo con useParams
14:02 min - 24

Texto por defecto en textarea con useLocation
21:54 min - 25

Implementación de React Router en Proyectos Legacy
11:07 min
Próximos pasos
Roles y permisos en aplicaciones web: Autenticación y autorización
Resumen
La autorización en React te permite decidir qué puede hacer cada usuario dentro de tu aplicación según su rol o relación con el contenido. Aquí aprendes a diferenciarla de la autenticación, asignar permisos de administrador y permitir que cada autor controle su propio contenido.
Cuál es la diferencia entre autenticación y autorización
Aunque suenan parecidas, no son lo mismo y conviene tenerlo claro antes de tocar código.
La autenticación identifica personas: responde a la pregunta de quién es quién dentro de tu app. La autorización, en cambio, define qué permisos tiene cada persona ya autenticada [01:00]. Las dos van de la mano, pero la magia ocurre cuando combinas ambas para modificar comportamientos según el usuario.
¿Qué es autorización en una app? Es el sistema que define qué acciones puede ejecutar un usuario autenticado, por ejemplo, eliminar un blog post si es administrador o autor del contenido.
Cómo crear una lista de administradores en el archivo auth
La idea es simular lo que normalmente haría un backend: devolver información sobre el rol del usuario al momento de hacer login.
Dentro de auth.js, se crea una constante adminList con un arreglo de usernames que tendrán superpoderes, por ejemplo Iris y Freddier [03:00]. En un entorno real, esa lista vendría de una base de datos junto con la respuesta de autenticación, pero para fines de aprendizaje se mantiene como arreglo manual.
Después, al construir el objeto user, se evalúa si el username del usuario actual está dentro de adminList usando el método some, que recorre el arreglo y devuelve true si encuentra coincidencia. Ese resultado se guarda en una variable isAdmin y se asigna como propiedad al usuario autenticado [04:30].
javascript const adminList = ['Iris', 'Freddier']; const isAdmin = adminList.some(admin => admin === username); const user = { username, isAdmin };
Cómo mostrar botones según el rol del usuario
Con la propiedad isAdmin lista, el siguiente paso es usarla en los componentes que dependen del permiso.
En blogPost.js se importa el hook useAuth y se evalúa si existe auth.user y si su propiedad isAdmin es true. Solo en ese caso se renderiza el botón de eliminar el blog post [06:30]. Esto significa que cualquier visitante o usuario común jamás verá ese botón, mientras que Iris o Freddier sí podrán hacerlo en cualquier publicación.
javascript {auth.user?.isAdmin && ( <button>Eliminar blog post</button> )}
Al iniciar sesión con Iris y entrar al blog, el botón aparece en todos los posts. Sin sesión o con un usuario común, no se muestra nada distinto.
Cómo permitir que cada autor edite su propio contenido
Un administrador puede borrar todo, pero también el autor original debería poder controlar lo que él mismo creó.
Para resolverlo se crea una variable canDelete que combina dos condiciones con un operador OR. Por un lado, que el usuario sea administrador. Por otro, que el author del blog post coincida con el username autenticado [09:30]. Si cualquiera se cumple, el botón aparece.
javascript const canDelete = auth.user?.isAdmin || blogPost.author === auth.user?.username;
El símbolo ?. es optional chaining, una característica reciente de ECMAScript que evita errores cuando una propiedad anidada no existe. En lugar de validar manualmente que auth.user exista antes de leer username, el operador devuelve undefined sin romper la app [11:00].
¿Para qué sirve el optional chaining en JavaScript? Permite acceder a propiedades anidadas sin verificar manualmente cada nivel. Si algo es
nulloundefined, devuelveundefineden lugar de lanzar un error.
Qué pasa al probar con distintos usuarios
La prueba final confirma que la lógica funciona en todos los escenarios.
- Un usuario aleatorio sin rol: no ve el botón en ningún post.
- Freddier, administrador: ve el botón en todos los posts.
- Juan DC, autor de un post sobre React: ve el botón solo en su propio contenido, no en los de Diana ni en otros temas que no escribió.
Esa combinación de rol + autoría es la base de los sistemas de permisos en aplicaciones reales, desde un blog hasta un CMS o un dashboard corporativo.
Qué reto debes resolver antes de la siguiente clase
La propuesta es ampliar la lógica con más de una lista de roles para practicar el patrón.
No te quedes solo con administradores. Crea listas adicionales como editores, content creators, beta testers o revisores, y asigna a cada una un comportamiento distinto. Por ejemplo:
- Administradores que puedan hacer todo.
- Beta testers con acceso a una página secreta.
- Editores que puedan borrar comentarios.
No necesitas implementar la acción real, basta con que el botón o la sección aparezca según el rol [14:00]. Cuéntame en los comentarios cómo lo resolviste.