Guest User

Untitled

a guest
Nov 2nd, 2017
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. ```javascript
  2. //npm modules
  3. const express = require('express');
  4. const uuid = require('uuid/v4')
  5. const session = require('express-session')
  6. const FileStore = require('session-file-store')(session);
  7. const bodyParser = require('body-parser');
  8. const passport = require('passport');
  9. const LocalStrategy = require('passport-local').Strategy;
  10.  
  11. const users = [
  12. {id: '2f24vvg', email: 'test@test.com', password: 'password'}
  13. ]
  14.  
  15. // configure passport.js to use the local strategy
  16. passport.use(new LocalStrategy(
  17. { usernameField: 'email' },
  18. (email, password, done) => {
  19. console.log('Inside local strategy callback')
  20. // here is where you make a call to the database
  21. // to find the user based on their username or email address
  22. // for now, we'll just pretend we found that it was users[0]
  23. const user = users[0]
  24. if(email === user.email && password === user.password) {
  25. console.log('Local strategy returned true')
  26. return done(null, user)
  27. }
  28. }
  29. ));
  30.  
  31. // tell passport how to serialize the user
  32. passport.serializeUser((user, done) => {
  33. console.log('Inside serializeUser callback. User id is save to the session file store here')
  34. done(null, user.id);
  35. });
  36.  
  37. // create the server
  38. const app = express();
  39.  
  40. // add & configure middleware
  41. app.use(bodyParser.urlencoded({ extended: false }))
  42. app.use(bodyParser.json())
  43. app.use(session({
  44. genid: (req) => {
  45. console.log('Inside session middleware genid function')
  46. console.log(`Request object sessionID from client: ${req.sessionID}`)
  47. return uuid() // use UUIDs for session IDs
  48. },
  49. store: new FileStore(),
  50. secret: 'keyboard cat',
  51. resave: false,
  52. saveUninitialized: true
  53. }))
  54. app.use(passport.initialize());
  55. app.use(passport.session());
  56.  
  57. // create the homepage route at '/'
  58. app.get('/', (req, res) => {
  59. console.log('Inside the homepage callback')
  60. console.log(req.sessionID)
  61. res.send(`You got home page!\n`)
  62. })
  63.  
  64. // create the login get and post routes
  65. app.get('/login', (req, res) => {
  66. console.log('Inside GET /login callback')
  67. console.log(req.sessionID)
  68. res.send(`You got the login page!\n`)
  69. })
  70.  
  71. app.post('/login', (req, res, next) => {
  72. console.log('Inside POST /login callback')
  73. passport.authenticate('local', (err, user, info) => {
  74. console.log('Inside passport.authenticate() callback');
  75. console.log(`req.session.passport: ${JSON.stringify(req.session.passport)}`)
  76. console.log(`req.user: ${JSON.stringify(req.user)}`)
  77. req.login(user, (err) => {
  78. console.log('Inside req.login() callback')
  79. console.log(`req.session.passport: ${JSON.stringify(req.session.passport)}`)
  80. console.log(`req.user: ${JSON.stringify(req.user)}`)
  81. return res.send('You were authenticated & logged in!\n');
  82. })
  83. })(req, res, next);
  84. })
  85.  
  86. // tell the server what port to listen on
  87. app.listen(3000, () => {
  88. console.log('Listening on localhost:3000')
  89. })
  90. ```
Add Comment
Please, Sign In to add comment