Guest User

Untitled

a guest
Aug 30th, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. /* EXPRESS SETUP */
  2.  
  3. const express = require('express');
  4. const app = express();
  5.  
  6. const bodyParser = require('body-parser');
  7. app.use(bodyParser.urlencoded({
  8. extended: true
  9. }));
  10.  
  11. const mongoose = require('mongoose');
  12. mongoose.connect('mongodb://localhost/MyDatabase');
  13.  
  14. const Schema = mongoose.Schema;
  15. const UserDetail = new Schema({
  16. username: String,
  17. password: String
  18. });
  19. const UserDetails = mongoose.model('userInfo', UserDetail, 'userInfo');
  20.  
  21.  
  22. const passport = require('passport');
  23.  
  24.  
  25. app.use(require('express-session')({
  26. secret: 'keyboard cat',
  27. resave: false,
  28. saveUninitialized: false
  29. }));
  30. app.use(passport.initialize());
  31. app.use(passport.session());
  32.  
  33. //We have to store the data in to req.session.passport={} object
  34. passport.serializeUser(function(user, done) {
  35. done(null, user.id);
  36. });
  37.  
  38. //We always need to deserilaize and validate the user
  39. passport.deserializeUser(function(id, done) {
  40. User.findById(id, function (err, user) {
  41. done(err, user);
  42. });
  43. });
  44.  
  45.  
  46. const LocalStrategy = require('passport-local').Strategy;
  47. //There are lot of strategies are there so we can use any of the strategy for an example Oauth, twitter, facebook login mechanisams
  48. passport.use(new LocalStrategy(
  49. function (username, password, done) {
  50. UserDetails.findOne({
  51. username: username
  52. }, function (err, user) {
  53. if (err) {
  54. return done(err);
  55. }
  56.  
  57. if (!user) {
  58. return done(null, false);
  59. }
  60.  
  61. if (user.password != password) {
  62. return done(null, false);
  63. }
  64. return done(null, user);
  65. });
  66. }
  67. ));
  68.  
  69. app.get('/',
  70. passport.authenticate('local', {
  71. failureRedirect: '/error'
  72. }),
  73. function (req, res) {
  74. res.redirect('/success?username=' + req.user.username);
  75. });
  76.  
  77.  
  78. app.post('/',
  79. passport.authenticate('local', {
  80. failureRedirect: '/error'
  81. }),
  82. function (req, res) {
  83. res.redirect('/success?username=' + req.user.username);
  84. });
  85.  
  86. app.get('/success', (req, res) => res.send("Welcome " + req.query.username + "!!"));
  87. app.get('/error', (req, res) => res.send("error logging in"));
  88.  
  89. passport.serializeUser(function (user, cb) {
  90. cb(null, user.id);
  91. });
  92.  
  93. passport.deserializeUser(function (id, cb) {
  94. User.findById(id, function (err, user) {
  95. cb(err, user);
  96. });
  97. });
  98.  
  99.  
  100.  
  101. app.get('/', (req, res) => res.sendFile('auth.html', {
  102. root: __dirname
  103. }));
  104.  
  105.  
  106.  
  107. const port = process.env.PORT || 3000;
  108. app.listen(port, () => console.log('App listening on port ' + port));
Add Comment
Please, Sign In to add comment