Guest User

Untitled

a guest
Nov 22nd, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. const express = require('express');
  2. const app = express();
  3. const uuid = require('uuid/v4');
  4. const cookieParser = require('cookie-parser');
  5. const serveStatic = require('serve-static');
  6. const expressSession = require('express-session');
  7. const FileStore = require('session-file-store')(expressSession);
  8. const bodyParser = require('body-parser');
  9. const passport = require('passport');
  10. const LocalStrategy = require('passport-local');
  11. const path = require('path');
  12.  
  13. // Fake user
  14. const user = { username: 'admin', password: 'admin'};
  15.  
  16. passport.use(new LocalStrategy(
  17. function(username, password, done) {
  18. if (username !== user.username) {
  19. return done(null, false);
  20. }
  21.  
  22. if (password !== user.password) {
  23. return done(null, false);
  24. }
  25.  
  26. return done(null, user);
  27. }
  28. ));
  29.  
  30. passport.serializeUser((user, done) => {
  31. done(null, user.username);
  32. });
  33.  
  34. passport.deserializeUser((id, done) => {
  35. const checkedUser = user.username === id ? user : false;
  36. done(null, checkedUser);
  37. });
  38.  
  39. app.use(serveStatic(path.join(__dirname + '/../api/build'), {
  40. index: false
  41. }));
  42.  
  43. app.use(cookieParser());
  44. app.use(bodyParser.urlencoded({ extended: true }));
  45. app.use(bodyParser.json());
  46. app.use(expressSession({
  47. genid: (req) => {
  48. return uuid() // use UUIDs for session IDs
  49. },
  50. store: new FileStore(),
  51. secret: 'keyboard cat',
  52. resave: false,
  53. saveUninitialized: true
  54. }));
  55.  
  56. app.use(passport.initialize());
  57. app.use(passport.session());
  58.  
  59. app.set('views', path.join(__dirname, 'views'));
  60.  
  61. // Set Pug as template engine.
  62. app.set('view engine', 'pug');
  63.  
  64. app.get('/', (req, res) => {
  65. if (req.user) {
  66. res.redirect('/v1'); // User already logged in
  67. } else {
  68. res.render('index'); // Unauthorized users must log in first
  69. }
  70. });
  71.  
  72. app.post('/', passport.authenticate('local', {
  73. successRedirect: '/v1', // authentication succeeded
  74. failureRedirect: '/' // // authentication failed
  75. }));
  76.  
  77. // show this page only if user is logged in
  78. app.get('/v1', passport.authorize('local', { failureRedirect: '/' }), (req, res) => {
  79. res.sendFile(path.join(__dirname + '/../api/build/index.html'));
  80. });
  81.  
  82. app.listen(process.env.PORT || 8080);
Add Comment
Please, Sign In to add comment