Estoy tratando de configurar un sitio para que cuando un usuario inicie sesión, la barra de navegación muestre "cerrar sesión" y, si el usuario no ha iniciado sesión, mostrará "registro" e "inicio de sesión". En este momento, a través del insomnio, he probado que el inicio de sesión funciona correctamente y llega a la ruta. El manillar simplemente no parece actualizarse en función de si la sesión está iniciada o no. Cualquier ayuda es muy apreciada, y avíseme si necesita más información sobre algo.
{{#if loggedIn}} <button class="button is-light" id="logout">logout</button> {{else}} <a href="http://localhost:3001/signup" class="button is-primary"> <strong>Sign up</strong> </a> <a href="http://localhost:3001/login"class="button is-light"> <strong>Log in</strong> </a> {{/if}}Esta es la ruta configurada para el inicio de sesión del usuario
```router.post('/login', async (req, res) => { `try { const userData = await User.findOne({ where: { email: req.body.email } })` if (!userData) { res.status(400).json({ message: "Incorrect email or password."}); return; } const validPassword = await userData.checkPassword(req.body.password) if (!validPassword) { console.log("YO") res.status(400).json({ message: "Incorrect email or password."}) return; } req.session.save(() => { req.session.user_id = userData.id; req.session.loggedIn = true; res.json({ user: userData, message: 'You are now logged in!' }); }); } catch (err) { res.status(400).json(err)} })
Y, por último, este es el código server.js que muestra el uso de los datos de la sesión
const sess = { secret: 'Super secret secret', cookie: {}, resave: false, saveUninitialized: true, store: new SequelizeStore({ db: sequelize }) }; app.use(session(sess)); ``` SCRIPT FOR LOGIN PAGE const loginFormHandler = async (event) => { event.preventDefault(); console.log("YO!!!!") const email = document.querySelector('#email-login').value.trim(); const password = document.querySelector('#password-login').value.trim(); if (email && password) { const response = await fetch('/api/users/login', { method: 'POST', body: JSON.stringify({email, password }), headers: { 'Content-Type': 'application/json' }, }); if (response.ok) { // If successful, redirect the browser to the profile page document.location.replace('/'); } else { alert(response.statusText); } } };