I'm currently working on a svelte project using express, with a login page. I wanted to make that if the user has not logged in, he will be redirected to the /login until he logs in. If the user has logged in, he can see the /home or every other page. Here is my Login.svelte
<script> import { goto } from '$app/navigation'; import { onMount } from 'svelte'; let email = ''; let password = ''; async function handleLogin() { const response = await fetch('http://localhost:3000/api/login', { method: 'POST', headers: {'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); const data = await response.json(); if (data.isLogged) { console.log('User logged in'); goto('/home'); } else { console.log('Login failed:', data.message); } }</script>
This is a component where the user logs in, and the data are fetched from the API.Here is the server.js
(express.js)
app.post("/api/login", function (req, res) { const { email, password } = req.body; con.query( `SELECT * FROM Utenti WHERE email = '${email}'`, function (err, result) { if (err) { res.send({ isLogged: false, message: err }); } else { if (result.length === 0) { res.send({ isLogged: false, message: "No user found" }); } else { const user = result[0]; bcrypt.compare( password, user.password, function (err, result) { if (result) { res.send({ isLogged: true, message: "Login successful", }); } else { res.send({ isLogged: false, message: "Incorrect password", }); } } ); } } } );});
And I suppose that the login must be saved inside the cookie, but I'm not sure how. And I think I need to modify my +page.server.ts
which right now looks like this:
import { redirect } from "@sveltejs/kit";export function load() { throw redirect(307, "/home");
}
Thanks to everyone who'll read this and will try to help me. Thanks!