Неправильно работает вывод сообщений об ошибке при регистрации
Пишу регистрацию на nodejs. Весь скрипт работает корректно. Но не могу настроить вывод сообщений в случае, если email уже зарегистрирован и т.д. Хочу использовать flash для этого. Но после нажатия на "Зарегистрироваться" ничего не происходит. redirect перенаправляет на /registration-error, в нем только текст в консоль выводится, а нужная страница не появляется. Как это исправить?
const express = require('express');
const session = require('express-session');
const MySQLStore = require('express-mysql-session')(session);
const passport = require('passport');
const bodyParser = require('body-parser');
const {sqlconnect} = require('./modules/sql')
const {checkPassword} = require('./modules/check-password');
const bcrypt = require('bcryptjs');
const flash = require('connect-flash');
const app = express();
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(flash());
const sessions_options = {
host: "localhost",
user: "root",
database: "sessions",
password: ""
};
const sessionStore = new MySQLStore(sessions_options);
//подключаем сессию
app.use(
session({
secret: 'fdFNK234F&^ef==wefdfh',
store: sessionStore,
cookie: {
path: '/',
httpOnly: true,
maxAge: 365 * 24 * 60 * 60 * 1000
},
resave: false,
saveUninitialized: false
})
)
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.get('/', (req, res) => {
res.render('index');
});
app.get('/support', (req, res) => {
res.render('support');
});
app.get('/contacts', (req, res) => {
res.render('contacts');
});
app.get('/profile', (req, res) => {
res.render('profile');
});
app.get('/registration', async (req, res) => {
res.render('auntefication/registration', {
title: 'Регистрация',
error: req.flash('error')
});
});
app.get('/registration-error', async (req, res) => {
console.log('registration-error сработал')
res.render('auntefication/registration', {
title: 'Регистрация',
error: req.flash('error')
});
});
app.post('/registration', async (req, res) => {
try {
if (!req.body) return res.sendStatus(400);
let error_code = 0;
const email = req.body.email,
name = req.body.name,
last_name = req.body.last_name,
pass = req.body.pass,
repass = req.body.repass;
error_code = checkPassword(pass, repass, error_code);
if (error_code != 0) {
switch (error_code) {
case 1:
req.flash('error', 'Пароль должен содержать только латинские символы, хотя бы одну заглавную букву, 2 цифры и хотя бы один специальный символ!');
return res.redirect('/registration-error');
break;
case 2:
req.flash('error', 'Пароли не совпадают');
return res.redirect('/registration-error');
break;
}
} else {
const hashPassword = await bcrypt.hash(pass, 10);
let query = 'SELECT EXISTS(SELECT email FROM users WHERE email =?) AS emailExists';
const connection = sqlconnect();
connection.query(query, [email], (err, result) => {
if (result[0].emailExists === 1) {
message = {
'code' : 2,
'text': "Пользователь с таким email уже существует!"
}
res.json(message);
} else {
let insert = 'INSERT INTO users (email, name, last_name, password) VALUES (?,?,?,?)';
connection.query(insert, [email, name, last_name, hashPassword]);
res.render('auntefication/auth');
}
})
}
} catch (e) {
console.log(e);
}
});
app.get('/auth', (req, res) => {
res.render('auntefication/auth');
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server started: http://localhost:${PORT}`)
})
Структура проекта