Contenido del curso

Rutas dinámicas con roles de usuario

Resumen

Si llegaste hasta aquí, ya manejas autenticación, autorización y rutas básicas con React Router. Ahora viene el reto final del módulo: construir un sistema de rutas dinámicas con permisos avanzados al estilo de Platzi, Twitter o cualquier red social donde cada usuario tiene su propio perfil público, pero solo el dueño (o un administrador) puede editarlo.

Este desafío te obliga a integrar todo lo aprendido hasta ahora: hooks de React, custom hooks, estado global, patrones de render y las APIs de React Router DOM v6.

¿Cómo funcionan las rutas de perfil públicas en apps tipo Platzi?

La idea es replicar el comportamiento real de plataformas como Platzi, Twitter o cualquier red social. No existe una ruta genérica /profile, sino una ruta única por cada usuario.

Cualquier persona, esté logueada o no, puede entrar a platzi.com/p/juandc y ver la información pública de ese perfil. La aplicación renderiza esa ruta sin importar quién la visite. Pero la edición es otra historia: solo el dueño de la cuenta puede modificar sus datos.

¿Qué es una ruta dinámica en React Router? Es una ruta cuyo segmento cambia según un parámetro, por ejemplo /p/:username. Con useParams lees ese valor y cargas la información correspondiente. [01:08]

¿Qué reglas de permisos debes implementar en el reto?

Aquí está el corazón del desafío. La lógica de permisos tiene tres capas que debes resolver con claridad.

  • Visitante anónimo o usuario normal ajeno: ve el perfil público, sin botones de edición.
  • Dueño de la cuenta: ve su perfil y además un botón o formulario para editar su propia información.
  • Administrador: puede editar cualquier perfil, el suyo y el de los demás.

La validación se hace comparando la identidad autenticada con el parámetro de la URL. Si los usernames o correos coinciden, se muestra la opción de edición. Si no coinciden y no hay rol de administrador, se oculta.

¿Cómo verifico si el usuario logueado es el dueño del perfil? Comparas el identificador del usuario autenticado (guardado en tu estado global) con el parámetro que obtienes de useParams. Si son iguales, renderizas el botón de editar. [02:15]

¿Qué herramientas de React necesitas combinar para resolverlo?

Este reto no se resuelve con una sola técnica. Necesitas orquestar varias piezas que ya viste en clases anteriores.

  • Rutas dinámicas con useParams para capturar el username desde la URL.
  • Estado global para compartir no solo la autenticación, sino también la información pública de cada cuenta entre componentes.
  • Patrones de render como los del reto de hace dos clases, donde decidías qué mostrar según el rol y el contexto.
  • React Hooks y custom hooks para encapsular la lógica de permisos y reutilizarla.
  • React Router DOM v6 con sus APIs de rutas anidadas y parámetros.

La clave está en pensar la solución de forma filosófica antes de tocar código. Ya tuviste un reto similar antes, así que aplica esa misma manera de razonar a este caso. [03:42]

¿Por qué compartir tu intento, incluso si falla, es lo más valioso?

Aquí va una invitación honesta. Los comentarios favoritos no son los de soluciones perfectas, son los de intentos fallidos bien documentados.

Algo como: "intenté esto, pero pasó aquello, entonces probé esta otra ruta y casi funciona excepto por este detalle". Ese tipo de aporte abre las mejores discusiones porque obliga a pensar a toda la comunidad. La comunidad es el valor más sagrado de Platzi, y se construye justo en esos momentos donde alguien se atreve a mostrar su proceso, no solo el resultado.

Intenta resolver el reto con todas tus fuerzas. Si lo logras, genial. Si no, también. Lo importante es que cuentes tu paso a paso, el cómo, el porqué, las dudas que te surgieron. En los comentarios te ayudamos a llegar a la solución o a descubrir un ángulo que no habías considerado.

¿Qué viene después de este reto en el curso?

Una vez completes el desafío, ya tendrás todas las herramientas de React Router que necesitas para cualquier proyecto. Pero el curso no termina ahí.

El siguiente módulo es una migración real: vas a tomar el proyecto de to do machine, que hasta ahora vive en una sola ruta con modales, y lo vas a convertir en una aplicación con rutas reales. Eso implica también añadir funcionalidades como editar to dos, lo que vuelve la app un poco más compleja y mucho más cercana a un producto real.

Cuéntame en los comentarios cómo te fue con el reto, qué intentaste primero, qué te trabó y qué decisión filosófica tomaste para resolver los permisos.