emailVerification.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. const Owner = require("../models/owner.js");
  2. // const mailgun = require("mailgun.js")({apiKey: process.env.MG_SUBLINE_APIKEY, domain: "mail.thesubline.net"});
  3. const formData = require("form-data");
  4. const Mailgun = require("mailgun.js");
  5. const mailgun = new Mailgun(formData);
  6. const mg = mailgun.client({username: "api", key: process.env.MG_SUBLINE_APIKEY});
  7. const verifyEmail = require("../emails/verifyEmail.js");
  8. module.exports = {
  9. sendVerifyEmail: function(req, res){
  10. let saveOwner = {};
  11. Owner.findOne({_id: req.params.id})
  12. .then((owner)=>{
  13. saveOwner = owner;
  14. // const mailgunData = {
  15. // from: "The Subline <clientsupport@thesubline.net>",
  16. // to: owner.email,
  17. // subject: "Email verification",
  18. // html: verifyEmail({
  19. // name: owner.name,
  20. // link: `${process.env.SITE}/verify/${owner._id}/${owner.session.sessionId}`,
  21. // })
  22. // };
  23. // mailgun.messages().send(mailgunData, (err, body)=>{});
  24. return mg.messages.create("mail.thesubline.net", {
  25. from: "The Subline <clientsupport@thesubline.net>",
  26. to: owner.email,
  27. subject: "Email verification",
  28. html: verifyEmail({
  29. name: owner.name,
  30. link: `${process.env.SITE}/verify/${owner._id}/${owner.session.sessionId}`
  31. })
  32. });
  33. })
  34. .then((response)=>{
  35. return res.render(`verifyPage/verify`, {id: saveOwner._id, email: saveOwner.email, banner: res.locals.merchant});
  36. })
  37. .catch((err)=>{
  38. req.session.error = "ERROR: UNABLE TO SEND VERIFICATION EMAIL";
  39. return res.redirect("/");
  40. });
  41. },
  42. resendEmail: function(req, res){
  43. Owner.findOne({email: req.body.email.toLowerCase()})
  44. .then((owner)=>{
  45. if(owner) throw "USER WITH THIS EMAIL ADDRESS ALREADY EXISTS";
  46. return owner.findOne({_id: req.body.id});
  47. })
  48. .then((owner)=>{
  49. owner.email = req.body.email.toLowerCase();
  50. return owner.save();
  51. })
  52. .then((owner)=>{
  53. return res.redirect(`/verify/email/${owner._id}`);
  54. })
  55. .catch((err)=>{
  56. if(typeof(err) === "string"){
  57. req.session.error = err;
  58. }else if(err.name === "ValidationError"){
  59. req.session.error = err.errors[Object.keys(err.errors)[0]].properties.message;
  60. }else{
  61. req.session.error = "ERROR: UNABLE TO CHANGE YOUR EMAIL ADDRESS";
  62. }
  63. return res.redirect("/");
  64. });
  65. },
  66. verify: function(req, res){
  67. Owner.findOne({_id: req.params.id})
  68. .then((owner)=>{
  69. if(req.params.code !== owner.session.sessionId){
  70. throw "UNABLE TO VERIFY EMAIL ADDRESS. INCORRECT LINK";
  71. }
  72. owner.status.splice(owner.status.indexOf("unverified"), 1);
  73. const mailgunList = mailgun.lists("clientsupport@mail.thesubline.com");
  74. const memberData = {
  75. subscribed: true,
  76. address: owner.email,
  77. name: owner.name,
  78. vars: {}
  79. }
  80. mailgunList.members().create(memberData, (err, data)=>{});
  81. return owner.save();
  82. })
  83. .then((owner)=>{
  84. req.session.success = "EMAIL VERIFIED. PLEASE LOG IN";
  85. return res.redirect("/login");
  86. })
  87. .catch((err)=>{
  88. if(typeof(err) === "string"){
  89. req.session.error = err;
  90. }else{
  91. req.session.error = "ERROR: UNABLE TO VERIFY EMAIL ADDRESS"
  92. }
  93. return res.redirect("/");
  94. });
  95. }
  96. }