Domina Cursor, el editor de código con IA que multiplica tu productividad como desarrollador.

0 de 35 lecciones completas (0%)

PROYECTO: TIENDA DE LIBROS ELECTRÓNICOS FULL STACK

Endpoint para cambiar la contraseña

Ahora vamos a probar el otro endpoint para la autenticación de usuarios. Ya hemos terminado con el perfil y ahora vamos con el cambio de contraseña.

Voy a copiar este endpoint y lo voy a duplicar aquí. Cambiaré la ruta a «change-password» y el método será PUT.

¿Cómo llamar a este endpoint?

Primero, vamos al controlador para el cambio de contraseña, que es el controlador de usuarios. Aquí tenemos «update profile», pero necesitamos ir a la ruta del cambio de contraseña.

En el controlador, lo que necesitamos hacer es enviar la contraseña actual y la nueva contraseña.

Voy a copiar esta propiedad para la contraseña actual. Y aquí añadiré la nueva contraseña. Déjame verificar cuál es el nombre de la propiedad… sí, es «newPassword».

Voy a cambiar la contraseña a «12345» y veamos qué sucede.

Solucionando errores

Obtenemos un error que dice que la nueva contraseña debe tener al menos 6 caracteres. Así que voy a cambiar a «123456789».

Ahora obtenemos un error 404 que significa «usuario no encontrado». Incluso si cambio la contraseña actual a la correcta, seguimos teniendo el mismo error.

Veamos dónde está el problema. El issue está aquí: no tenemos «.id» en el usuario. Como vimos anteriormente, debería ser req.user.id.

También tenemos que modificar el endpoint de perfil de la misma manera.

Corrigiendo el middleware

Vamos al cambio de contraseña. El error no viene de aquí, sino de la ruta donde dice que el token no es válido.

Revisemos la terminal e intentemos de nuevo… «Cannot set property of undefined on ID».

Creo que el problema está en nuestro middleware. Cambiemos esto a req.user y removamos esta parte.

Probando la funcionalidad

Ahora intentemos de nuevo. Esta vez dice «error de validación: la contraseña debe tener al menos 8 caracteres». Voy a poner una contraseña de 8 caracteres.

¡Perfecto! Ahora funciona. Esta es nuestra nueva contraseña.

Si intento enviar la solicitud de nuevo, dice que la contraseña actual no es correcta, porque ahora la contraseña actual ha cambiado.

Si quiero cambiar a otra contraseña, por ejemplo «123456789», ahora funciona correctamente.

Verificando el login

Si intento hacer login con la contraseña antigua, obtengo «inválido». Pero con la nueva contraseña, ¡funciona perfectamente!

Resumen de privacidad
Logo JeroCuevas.com

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies de terceros

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.