const express = require('express'); const session = require('express-session') const { Sequelize, DataTypes } = require('sequelize'); const SequelizeStore = require('connect-session-sequelize')(session.Store) const path = require('path') const app = express(); const port = 3000; const sequelize = new Sequelize({ dialect: 'postgres', host: 'campfiregg.ru', port: '5432', database: 'campfire_dev', username: 'dispain', password: 'C4mpF1r3!', }) const PlayerModel = sequelize.define('player', { id: {type: DataTypes.INTEGER, primaryKey: true, unique: true, autoIncrement: true}, username: {type: DataTypes.STRING}, password: {type: DataTypes.STRING}, level: {type: DataTypes.INTEGER, defaultValue: 0}, }) const sessionStore = new SequelizeStore({ db: sequelize, tableName: 'connections', }) app.use(express.static(path.join(__dirname, 'files'))) app.use(express.urlencoded({ extended: true })); app.use(session({ secret: 'key', store: sessionStore, resave: false, saveUninitialized: true, cookie: { secure:false } })); const start = async() => { try { await sequelize.authenticate(); console.log('Успешное подключение БД') await sequelize.sync({ alter:true }) console.log('Синхронизация моделей завершена.') sessionStore.sync(); console.log('Синхронизация сессий завершена.') } catch (error) { console.log(`Ошибка подключения к БД: ${error}`) } } start() // Middleware для обработки данных из формы const requireLogin = (req, res, next) => { if (req.session.user) { next(); } else { res.redirect('/login') } }; app.get('/', async (req, res) => { res.sendFile(path.join(__dirname, '/files/html/index.html')) }); // Главная страница с формой логина app.get('/login', (req, res) => { res.sendFile(path.join(__dirname, '/files/html/login.html')) }); // Обработка логина app.post('/login', async (req, res) => { const { username, password } = req.body; const user = await PlayerModel.findOne({where: { username: username, password: password}}) if (user) { req.session.user = user; res.redirect('/') } else { res.send('