=====сессия===== **server.js** const express = require('express');//Подключаем модуль const path = require('path');//Модуль для работы с путями к файлам и папкам const exphbs = require('express-handlebars');//Подключаем шаблонизатор const db = require('mongoose'); const session = require('express-session');//модуль для создания сессий, в express const config = require('./config/config'); const User = require('./models/user'); const varMiddleware = require('./middleware/variables');//модуль проверки авторизации const app= express();//Результат работы модуля express, по сути создает сервер const PORT = process.env.PORT || 3000; //Получить порт из переменного окружения или использовать дефолтный const authRoutes = require('./routes/auth');//Страница auth const hbs= exphbs.create({//Настройки шаблонизатора defaultLayout: 'main',//Шаблон по умолчанию, основной, (template/layouts/main.hbs) extname: 'hbs' //Расширение шаблонов, пользовательское. По умолчанию express-handlebars }); app.engine('hbs', hbs.engine);//Подключени шаблонизатора к express, регестрируем движок app.set('view engine', 'hbs');//Запускаем шаблонизатор, используем app.set('views', 'template');//Указываем папку с шаблонами app.use(express.static(path.join(__dirname,'public')));//Статические папки для хранения стилей картинок app.use(express.urlencoded({extended: true})); app.use(session({//инициализация сессии secret: 'key secret',//секретный ключ для сессии resave: false, saveUninitialized: false })); app.use(varMiddleware);//middleware - срабатывает при загруке страницы, данный метод проверяет авторизацию middleware/variables.js /** * Регестрируем роуты, с префиксами */ app.use('/auth',authRoutes);//Страница заказов **middleware/variables.js** /** * проверяем авторизацию при каждой загрузке страницы * req -запрос * res - ответ * next - продолжить выполнение, без вызова этого метода, страница не загрузится */ module.exports = function(req, res, next){ res.locals.isAuth = req.session.isAuthenticated;//res.locals - в шаблонах можно обращаться {{isAuth}} next(); }; **routes/auth.js** const {Router} = require('express');//модуль express const router = Router();//инициируем роутер /** * Страница /auth/login */ router.get('/login',(req, res) => { res.render('auth/login',{//шаблон template/auth/login.hbs title: 'авторизация' }); }); /** * Авторизуем пользователя */ router.post('/login', async (req, res) => { req.session.isAuthenticated = true;//добавить в сессию свойство isAuthenticated = true res.redirect('/');//редирект на главную страницу }); /** * выйти из аккаунта */ router.get('/logout', async (req, res) => { //req.session.isAuthenticated = false; req.session.destroy(() => {//уничтожить сессию res.redirect('/auth/login#login');//калбек сработает после уничтожения сессии }); }); module.exports = router;//Экспортирум роутер