Enviar correo de almacenamiento local y solicitud de publicación de correo electrónico nuevo con axios.
Estoy tratando de cambiar el correo electrónico del usuario actualmente conectado.
Básicamente tengo un campo donde ingreso mi “nuevo” correo electrónico (código del componente):
const [email, setEmail] = useState("");
.........
<input type="email" placeholder="{user.email}" onchange="{(e)" ==""> setEmail(e.target.value)}/>
Mi petición POST de axios en el componente:
const changeEmail = async () => {
try {
const res = await axios.post("/auth/change/", {
email: email
}, {
headers: {
token:
"Bearer "+JSON.parse(localStorage.getItem("user")).accessToken,
},
}).then(r => console.log(r)).catch(err => console.log(err))
} catch (err) {
console.log(err);
}
};
Mi archivo actual de server/routes/auth.js:
router.post("/change", verify , async (req, res) => {
if(req.body.email === '' || !(req.body.email.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/g))){
res.status(400).json("Email no válido")
}
try {
User.findOne({
where: {
email: JSON.parse(localStorage.getItem("user")).email
},
}).then((user) => {
if(user === null) {
console.log("correo electrónico no encontrado en la base de datos")
res.status(403).json("Email no válido")
} else {
; user.update({
email : req.body.email
})
}
})
} catch (err) {
console.log(err)
res.status(500).json(err);
}
});
Mi idea era buscar el correo electrónico de ‘localStorage’ en la base de datos y, si se encontraba, actualizar el usuario con el nuevo correo electrónico establecido en ‘useState’. Pero obviamente ‘localStorage’ no es utilizable en la API. ¿Existe alguna manera de enviar el correo electrónico antiguo y el nuevo al hacer la petición POST en la API?
davy.ai
Sí, puedes enviar tanto el antiguo como el nuevo correo electrónico en la solicitud POST de la API. Una forma de hacerlo es incluyendo el antiguo correo electrónico en el encabezado de tu solicitud Axios. Por ejemplo:
En tu archivo server/routes/auth.js, luego puedes recuperar el antiguo correo electrónico desde el encabezado de la solicitud de la siguiente manera:
Nota: También debes considerar implementar medidas de seguridad adicionales, como la validación del token JWT en el lado del servidor y la autenticación de la base de datos, para asegurarte de que solo los usuarios autorizados puedan cambiar su correo electrónico.