Advertisement
Guest User

Untitled

a guest
Feb 17th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. var express = require('express');
  2. var router = express.Router();
  3.  
  4. var passport = require('passport');
  5. var LocalStrategy = require('passport-local').Strategy;
  6.  
  7. var multer = require('multer');
  8. var upload = multer();
  9.  
  10. var User = require('../models/user');
  11.  
  12.  
  13. //REGISTER
  14. //GET registration page
  15. router.get('/register', function(req, res, next) {
  16. res.render('register', {
  17. 'title': 'Register'
  18. });
  19. });
  20.  
  21. //POST registration form values to database
  22. router.post('/register', upload.array(), function(req, res, next) {
  23. //get form values
  24. var name = req.body.name;
  25. var email = req.body.email;
  26. var username = req.body.username;
  27. var comment = req.body.comment;
  28. var password = req.body.password;
  29. var password2 = req.body.password2;
  30.  
  31. //form validation
  32. req.checkBody('name', 'Name is required').notEmpty();
  33. req.checkBody('email', 'Email is required').notEmpty();
  34. req.checkBody('email', 'Invalid Email').isEmail();
  35. req.checkBody('username', 'username is required').notEmpty();
  36. req.checkBody('password', 'password is required').notEmpty();
  37. req.checkBody('password2', 'passwords do not match').equals(req.body.password);
  38.  
  39. //check for errors
  40. var errors = req.validationErrors();
  41.  
  42. if(errors){
  43. res.render('register', {
  44. errors: errors,
  45. name: name,
  46. email: email,
  47. username: username,
  48. password: password,
  49. password2: password2
  50. });
  51. } else {
  52. var newUser = new User({
  53. name: name,
  54. email: email,
  55. username: username,
  56. password: password,
  57. comments: comment
  58. });
  59.  
  60. //create user in db
  61. User.createUser(newUser, function(err,user){
  62. if(err) throw err;
  63. console.log(user);
  64. });
  65.  
  66. //success message
  67. req.flash('success', 'You are now registered!');
  68.  
  69. // res.location('/');
  70. res.redirect('./login');
  71. }
  72.  
  73. });
  74.  
  75. passport.serializeUser(function(user, done){
  76. done(null, user.id);
  77. });
  78.  
  79. passport.deserializeUser(function(id, done){
  80. User.getUserById(id, function(err, user){
  81. done(err, user)
  82. });
  83. });
  84.  
  85. //LOGIN
  86. //go to login page
  87. router.get('/login', function(req, res, next) {
  88. console.log('welcome, please log in!');
  89. res.render('login', {
  90. 'title': 'Login'
  91. });
  92. });
  93.  
  94. //Check if password is correct with Passport
  95. passport.use(new LocalStrategy(
  96. function(username, password, done) {
  97. User.getUserByUsername(username, function(err, user){
  98. if(err) throw err;
  99. if(!user) {
  100. console.log('Unknown User');
  101. return done(null, false, {message: 'Unknown User'});
  102. }
  103.  
  104. User.comparePassword(password, user.password, function(err, isMatch) {
  105. if(err) throw err;
  106. if(isMatch){
  107. return done(null, user);
  108. } else {
  109. console.log('Invalid password');
  110. return done(null, false, {message: 'Invalid Password'});
  111. }
  112. });
  113. });
  114. }
  115. ));
  116.  
  117. //Go to user profile page if login succeeds, back to login if not
  118. router.post('/login', passport.authenticate('local', {failureRedirect: '/users/login', failureFlash: 'Invalid username or password'}), function(req, res) {
  119. console.log('Authentication Successful!');
  120. req.flash('success', 'You are now logged in!');
  121. res.redirect('./profile');
  122. });
  123.  
  124.  
  125. //PROFILE
  126. //logged in profile
  127. router.get('/profile', ensureAuthenticated, function(req, res, next) {
  128. res.render('profile', {
  129. 'title': 'Profile'
  130. });
  131. });
  132.  
  133. //PUBLIC PROFILE
  134. //get public profile
  135. router.get('/publicprofile/:username', function(req, res, next) {
  136. var username = req.params.username;
  137. //get user info from db
  138. User.getUserByUsername(username, function(err, user) {
  139. if(err) {
  140. console.log(err);
  141. res.send(err);
  142. }
  143. if(user === null) {
  144. res.render('unknownuser', {
  145. 'title': 'unknownuser'
  146. });
  147. }
  148. else {
  149. res.render('publicprofile', {
  150. 'user': user,
  151. 'username': user.username
  152. });
  153. }
  154. });
  155. });
  156.  
  157.  
  158. //POST comment form values to database
  159. router.post('/publicprofile/:username', function(req, res, next) {
  160. var username = req.params.username;
  161. console.log(username);
  162. var comment = req.body.comment;
  163.  
  164. User.addComment(comment, username, function(err, user) {
  165. if(err) throw err;
  166. console.log(user);
  167. });
  168.  
  169. req.flash('success', 'Comment Added!');
  170. res.redirect(username);
  171. });
  172.  
  173.  
  174. //LOGOUT
  175. router.get('/logout', function(req, res) {
  176. req.logout();
  177. req.flash('success', 'You have logged out');
  178. console.log('logged out')
  179. res.redirect('/users/login');
  180. })
  181.  
  182. //only let logged in users go to route
  183. function ensureAuthenticated(req, res, next) {
  184. if (req.isAuthenticated()) {
  185. return next();
  186. }
  187. res.redirect('/users/login');
  188. }
  189.  
  190. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement