Guest User

Untitled

a guest
Mar 1st, 2018
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. var nodemailer = require('nodemailer');
  2. var passport = require('passport');
  3. var LocalStrategy = require('passport-local').Strategy;
  4.  
  5. var User = require('../models/user');
  6.  
  7. exports.register = function(req, res, next) {
  8. res.render('register', { title: 'Rafflefly | Register' });
  9. }
  10.  
  11. exports.post_register = function(req, res, next) {
  12. var first_name = req.body.first_name;
  13. var last_name = req.body.last_name;
  14. var email = req.body.email;
  15. var password = req.body.password;
  16.  
  17. // validations
  18. req.checkBody('first name', 'The first name is required').notEmpty();
  19. req.checkBody('last name', 'The last name is required').notEmpty();
  20. req.checkBody('email', 'An account email is required').notEmpty();
  21. req.checkBody('email', 'This account email is not valid').isEmail();
  22. req.checkBody('password', 'An account password is required').notEmpty();
  23.  
  24. if (error) {
  25. req.flash('error', 'The form could not send successfully');
  26. } else {
  27. var newUser = new User({
  28. first_name: first_name,
  29. last_name: last_name,
  30. email: email,
  31. password: password,
  32. });
  33.  
  34. nodemailer.createTestAccount((err, account) => {
  35. // create reusable transporter object using the default SMTP transport
  36. if (process.env.NODE_ENV === 'production') {
  37. transporter = nodemailer.createTransport({
  38. host: "smtp.sendgrid.net",
  39. port: 587,
  40. auth: {
  41. user: process.env.SENDGRID_USERNAME,
  42. pass: process.env.SENDGRID_PASSWORD,
  43. }
  44. });
  45. } else {
  46. transporter = nodemailer.createTransport({
  47. host: "smtp.ethereal.email",
  48. port: 587,
  49. auth: {
  50. user: 'qkkvnabtziufbksa@ethereal.email',
  51. pass: 'A4W9HF2WbhAav263VM',
  52. }
  53. });
  54. }
  55. // setup email data with unicode symbols
  56. let mailOptions = {
  57. from: process.env.GLOBAL_EMAIL || 'ben@benbagley.co.uk', // sender address
  58. to: `${email}`, // list of receivers
  59. subject: 'Welcome to Rafflefly', // Subject line
  60. html: `Welcome to Rafflefly` // html body
  61. };
  62. // send mail with defined transport object
  63. transporter.sendMail(mailOptions, (error, info) => {
  64. if (error) {
  65. return console.log(error);
  66. }
  67.  
  68. req.flash('success', 'You are now registered, you can now login!');
  69. res.redirect('/');
  70. });
  71. });
  72.  
  73. User.createUser(newUser, function(err, user) {
  74. if(err) throw err;
  75. console.log(user);
  76. });
  77. }
  78. };
  79.  
  80. passport.use(new LocalStrategy({
  81. usernameField: 'email'
  82. },
  83. function(email, password, done) {
  84. User.getUserByEmail(email, function(err, user){
  85. if(err) throw err;
  86. if(!user){
  87. return done(null, false, {message: 'Unknown Email Address'});
  88. }
  89.  
  90. User.comparePassword(password, user.password, function(err, isMatch){
  91. if(err) throw err;
  92. if(isMatch){
  93. return done(null, user);
  94. } else {
  95. return done(null, false, {message: 'Invalid password'});
  96. }
  97. });
  98. });
  99. }));
  100.  
  101. passport.serializeUser(function(user, done) {
  102. done(null, user.id);
  103. });
  104.  
  105. passport.deserializeUser(function(id, done) {
  106. User.getUserById(id, function(err, user) {
  107. done(err, user);
  108. });
  109. });
  110.  
  111. exports.login = function(req, res, next) {
  112. res.render('login', { title: 'Rafflefly | Login' });
  113. }
  114.  
  115. exports.post_login = function(req, res, next) {
  116. res.post('/login', passport.authenticate('local', {
  117. successRedirect: '/dashboard',
  118. failureRedirect: '/login',
  119. failureFlash: true })
  120. );
  121. }
  122.  
  123. doctype html
  124. html
  125. head
  126. title= title
  127. meta(name='viewport' content='width=device-width, initial-scale=1')
  128. meta(charset='utf-8')
  129.  
  130. link(rel='stylesheet' href='/stylesheets/output.css')
  131. link(rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css')
  132. body(class='antialiased min-h-screen')
  133. include navigation
  134. include error
  135. block content
  136. include footer
  137.  
  138. script(src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js')
  139. script(src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.bundle.min.js')
  140. script(src='/javascripts/fontawesome-all.min.js' defer)
  141. script(src='/javascripts/site.js')
Add Comment
Please, Sign In to add comment