Guest User

Untitled

a guest
Nov 2nd, 2017
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 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. passport.deserializeUser((id, done) => {
  38. console.log('Inside deserializeUser callback')
  39. console.log(`The user id passport saved in the session file store is: ${id}`)
  40. const user = users[0].id === id ? users[0] : false;
  41. done(null, user);
  42. });
  43.  
  44. // create the server
  45. const app = express();
  46.  
  47. // add & configure middleware
  48. app.use(bodyParser.urlencoded({ extended: false }))
  49. app.use(bodyParser.json())
  50. app.use(session({
  51. genid: (req) => {
  52. console.log('Inside session middleware genid function')
  53. console.log(`Request object sessionID from client: ${req.sessionID}`)
  54. return uuid() // use UUIDs for session IDs
  55. },
  56. store: new FileStore(),
  57. secret: 'keyboard cat',
  58. resave: false,
  59. saveUninitialized: true
  60. }))
  61. app.use(passport.initialize());
  62. app.use(passport.session());
  63.  
  64. // create the homepage route at '/'
  65. app.get('/', (req, res) => {
  66. console.log('Inside the homepage callback')
  67. console.log(req.sessionID)
  68. res.send(`You got home page!\n`)
  69. })
  70.  
  71. // create the login get and post routes
  72. app.get('/login', (req, res) => {
  73. console.log('Inside GET /login callback')
  74. console.log(req.sessionID)
  75. res.send(`You got the login page!\n`)
  76. })
  77.  
  78. app.post('/login', (req, res, next) => {
  79. console.log('Inside POST /login callback')
  80. passport.authenticate('local', (err, user, info) => {
  81. console.log('Inside passport.authenticate() callback');
  82. console.log(`req.session.passport: ${JSON.stringify(req.session.passport)}`)
  83. console.log(`req.user: ${JSON.stringify(req.user)}`)
  84. req.login(user, (err) => {
  85. console.log('Inside req.login() callback')
  86. console.log(`req.session.passport: ${JSON.stringify(req.session.passport)}`)
  87. console.log(`req.user: ${JSON.stringify(req.user)}`)
  88. return res.send('You were authenticated & logged in!\n');
  89. })
  90. })(req, res, next);
  91. })
  92.  
  93. app.get('/authrequired', (req, res) => {
  94. console.log('Inside GET /authrequired callback')
  95. console.log(`User authenticated? ${req.isAuthenticated()}`)
  96. if(req.isAuthenticated()) {
  97. res.send('you hit the authentication endpoint\n')
  98. } else {
  99. res.redirect('/')
  100. }
  101. })
  102.  
  103. // tell the server what port to listen on
  104. app.listen(3000, () => {
  105. console.log('Listening on localhost:3000')
  106. })
  107. ```
Add Comment
Please, Sign In to add comment