Advertisement
Guest User

Untitled

a guest
Nov 1st, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. var app = require('express')(),
  2. server = require("http").createServer(app),
  3. io = require("socket.io")(server),
  4. session = require("express-session"),
  5. FileStore = require('session-file-store')(session),
  6. options = {secret: "my-secret",
  7. store: new FileStore,
  8. resave: true,
  9. saveUninitialized: true},
  10. sharedsession = require("express-socket.io-session");
  11.  
  12. var passport = require('passport')
  13. , LocalStrategy = require('passport-local').Strategy;
  14. var records = [
  15. { id: 1, username: 'jack', password: 'secret', name: 'Jack'}
  16. , { id: 2, username: 'jill', password: 'birthday', name: 'Jill'}
  17. ];
  18. passport.use(new LocalStrategy(
  19. function(username, password, cb) {
  20. console.log("username="+username+" password="+password);
  21. findByUsername(username, function(err, user) {
  22. if (err) { console.log("err"); return cb(err); }
  23. if (!user) { console.log("user not found"); return cb(null, false); }
  24. if (user.password != password) { console.log("password not match"); return cb(null, false); }
  25. console.log("login success");
  26. return cb(null, user);
  27. });
  28. }
  29. ));
  30. passport.serializeUser(function(user, cb) {
  31. console.log("serializeUser="+JSON.stringify(user));
  32. cb(null, user.id);
  33. });
  34. passport.deserializeUser(function(id, cb) {
  35. console.log("deserializeUser="+id);
  36. findById(id, function (err, user) {
  37. if (err) { return cb(err); }
  38. cb(null, user);
  39. });
  40. });
  41.  
  42. // Attach session
  43. app.use(session(options));
  44.  
  45. // Share session with io sockets
  46.  
  47. io.use(sharedsession(session));
  48.  
  49. app.use(passport.initialize());
  50. app.use(passport.session());
  51.  
  52. app.get('/', function (req, res) {
  53. res.sendFile(__dirname + '/index1.html');
  54. }).post('/login',
  55. passport.authenticate('local', {failureRedirect: '/'}),
  56. function(req, res){
  57. req.session.user = {
  58. username: "OSK"
  59. };
  60. res.sendFile(__dirname + '/home1.html');
  61. }).get('/logout', function(req, res){
  62. req.session.destroy(function(err) {
  63. if(err) {
  64. logger.error(err);
  65. }
  66. else {
  67. res.clearCookie(options.name, { path: '/' });
  68. res.redirect('/');
  69. }
  70. });
  71. });
  72. io.on("connection", function(socket) {
  73. console.log("new id="+socket.id);
  74. // Accept a login event with user's data
  75. socket.on("login", function(userdata) {
  76. socket.handshake.session.userdata = userdata;
  77. });
  78. socket.on("logout", function(userdata) {
  79. if (socket.handshake.session.userdata) {
  80. delete socket.handshake.session.userdata;
  81. }
  82. });
  83. });
  84.  
  85. server.listen(3000);
  86.  
  87. function findByUsername(username, cb)
  88. {
  89. console.log("findByUsername");
  90. for (var i = 0, len = records.length; i < len; i++) {
  91. var record = records[i];
  92. if (record.username === username) {
  93. return cb(null, record);
  94. }
  95. }
  96. return cb(null, null);
  97. }
  98. function findById(id, cb)
  99. {
  100. console.log("findById");
  101. var idx = id - 1;
  102. if (records[idx]) {
  103. cb(null, records[idx]);
  104. } else {
  105. cb(new Error('User ' + id + ' does not exist'));
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement