=====шифрование пароля (bcryptjs)===== const {Router} = require('express');//модуль express const bcrypt = require('bcryptjs');//Модуль шифрования const User = require('../models/user');//модель пользователя const router = Router();//инициируем роутер /** * Авторизуем пользователя * первый параметр адрес страницы, в данном случае используется префикс при регистрации ройтера, * второй параметр callback - обработчик запроса req - request , запрос от браузера * res - response, ответ сервера */ router.post('/login', async (req, res) => { try{ const {email, password} = req.body;//данные post const candidate = await User.findOne({email: email});//получить пользователя if(candidate){//если пользователь существует const areSame = await bcrypt.compare(password, candidate.password);//сравниваем пароль if(areSame){//если пароль совпадает req.session.user = candidate;//получить пользователя, пока пользователь статичен req.session.isAuthenticated = true;//добавить в сессию свойство isAuthenticated = true req.session.save(err => {//метод необходим только в том случае когда, нужно подождать пока не сохранится сессия if(err){ throw err; } res.redirect('/');//редирект на главную страницу, // будет выполнен только после того как сессия сохранилась }); } else{ res.redirect('/auth/login#login'); } } else{ res.redirect('/auth/login#login'); } }catch(err){ console.log(err); } }); /** * Регистрация пользователя * первый параметр адрес страницы, в данном случае используется префикс при регистрации ройтера, * второй параметр callback - обработчик запроса req - request , запрос от браузера * res - response, ответ сервера */ router.post('/register', async (req, res) => { const {email, password, confirm, name} = req.body;//получить данные пользоватедя const candidate = await User.findOne({email: email});//поиск пользователя с таким же email if(password !== confirm){//Проверка пароля throw new Error('Пароль не совпадает: '+password +'!-'+ confirm); } if(candidate){//если такой email уже зарегестрирован res.redirect('/auth/login#register');//редирект на страницу регистрации } else{ const hashPassword = await bcrypt.hash(password, 10);//Шифруем пароль const user = new User({email, name, password:hashPassword, cart: {items:[]}});//создание пользователя await user.save();//сохраняем запись } res.redirect('/auth/login#login'); } ); module.exports = router;//Экспортирум роутер