Witam pisze swój pierwszy projekt w NodeJS konkretniej w ExpressJS jest to prosty system logowania. Kiedy użytkownik został znaleziony w bazie danych i wszystko zostało sprawdzone chcę by przekierowało użytkownika na adres /logged używam więc res.redirect('/logged'); potem ustawiam app.get(); na ten route i wysyłam plik res.sendFile(); w zakładce Network w devToolsach widnieje request z poprawnym plikiem HTML jednak nie pojawia się on w widoku strony jest to mój pierwszy projekt i nie do końca wiem co trzeba jeszcze zrobić, z góry liczę na pomoc :)
Edit: Mam trop choć nie wiem czy to ma sens to czy problem nie pojawia się przez middleware express.static()?
ExpressJS:
const express = require('express');
const path = require('path');
const pool = require('./queries');
const { body, validationResult } = require('express-validator');
const app = express();
const port = 3000;
class User {
constructor(id, email, passwd, isRemembered) {
this.id = id;
this.email = email;
this.passwd = passwd;
this.isRemembered = isRemembered;
}
}
let user = new User();
app.use(express.static(__dirname +'/public'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.post('/login', body('email').isEmail(), body('passwd').isLength({ min: 5 }), (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(200).json({ login: false, data: { error: errors.array(), msg: 'Error!' } });
}
const { email, passwd, rememberMe } = req.body;
pool.query(`SELECT user_id FROM users WHERE email='${ email }' AND passwd='${ passwd }'`, (error, response) => {
if (error) {
return res.status(200).json({ login: false, data: { error: error, msg: 'Failed to login!' } });
throw error;
}
const id = response.rows;
if (id.length == 0) {
return res.status(200).json({ login: false, data: { error: error, msg: 'Failed to login!' } });
} else {
user.id = id;
user.email = email;
user.passwd = passwd;
user.isRemembered = rememberMe;
res.status(200).redirect('/logged');
}
});
});
app.get('/logged', (req, res) => {
res.status(200).sendFile(path.join(__dirname, 'public', 'logged.html'));
console.log(user.id);
});
app.listen(port, () => console.log(`Server is running on port ${ port }... `));
Front-end:
document.addEventListener('DOMContentLoaded', () => {
const form = document.querySelector('.Login--Form');
const submit = form.querySelector('.Submit');
submit.addEventListener('click', () => {
const email = form.querySelector('.Email').value;
const passwd = form.querySelector('.Passwd').value;
const rememberMe = form.querySelector('.Checkbox').checked;
axios({
method: 'post',
url: '/login',
data: {
email: email,
passwd: passwd,
rememberMe: true
}
}).then((response) => {
const result = form.querySelector('.Result');
if (response.data.login != false) {
result.textContent = `Zalogowano sie!`;
} else {
result.textContent = 'Niepoprawne Dane Logowania!';
}
}).catch((error) => {
console.log(error);
});
});
});