Инструменты пользователя

Инструменты сайта


nodejs:email:soobschenie_pri_registracii

отправить сообщение при регистрации пользователя

emails/registration.js

const config = require('../config/config');//подключаем конфиг
 
/**
 * Возврощаем функцию
 * @param email - куда будем отправлять письмо
 * @returns {{to: *, from: string, subject: string, html: string}}
 */
module.exports = function(email){
    return {
        to: email,// - куда будем отправлять письмо
        from: config.from,//от кого письмо
        subject:'Аккаунт создан',//тема письма
        //тело письма
        html: `<h1>Добро пожаловать</h1> <p>вы успешно создали аккаунт - ${email}</p>
               <hr>
               <a href="${config.base_url}"> Перейти в магазин</a>
            `
    }
};
const {Router} = require('express');//модуль express
const bcrypt = require('bcryptjs');//Модуль шифрования
const User = require('../models/user');//модель пользователя
const nodeMailer = require('nodemailer');//mailer
const sendGrid = require('nodemailer-sendgrid-transport');//Транспорт для mailer
const config = require('../config/config');//конфигурация
const regMail = require('../emails/registration');//конфигурация для почтовой рассылки
 
const router = Router();//инициируем роутер
 
const transporter = nodeMailer.createTransport(sendGrid({//инициируем коннект с sendGrid, по токену
    auth: {
        api_key:config.send_grid_key//токен, его можно получить в самом сервисе
        // , https://app.sendgrid.com/ -> setting->api_key, выбираем full
    }
}));
 
 
/**
 * Регистрация пользователя
 * первый параметр адрес страницы, в данном случае используется префикс при регистрации ройтера,
 * второй параметр 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){//Проверка пароля
           req.flash('error', 'Пароль не совпадает');//сохроняем ошибку в сессию, с ключом error
           res.redirect('/auth/login#register');//редирект на страницу регистрации
       }
       if(candidate){//если такой email уже зарегестрирован
            req.flash('error', 'Такой email уже существует');//сохроняем ошибку в сессию, с ключом error
            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();//сохраняем запись
 
           await transporter.sendMail(regMail(email));//отправить mail, Рекомендуется использовать после редиректов
 
           res.redirect('/auth/login#login');
       }
 
    }
);
 
module.exports = router;//Экспортирум роутер
nodejs/email/soobschenie_pri_registracii.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)