шифрование пароля (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;//Экспортирум роутер