Guest User

Untitled

a guest
Oct 26th, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. 'use strict'
  2.  
  3. const express = require('express');
  4. const bodyParser = require('body-parser');
  5. const cookieParser = require('cookie-parser');
  6. const nocache = require('nocache');
  7. const uuidv1 = require('uuid/v1');
  8. const uuidv4 = require('uuid/v4');
  9.  
  10. const app = express();
  11. const PORT = 8090;
  12. let SESSION_STORE = {};
  13.  
  14. app.use(bodyParser.urlencoded({extended: false}));
  15. app.use(bodyParser.json());
  16. app.use(cookieParser());
  17. app.use(nocache());
  18. app.use(express.static('static'));
  19.  
  20. app.listen(PORT, function () {
  21. console.log("Server is listening on " + PORT);
  22. });
  23.  
  24.  
  25. app.get('/', function (req, res) {
  26.  
  27. const sessionId = req.cookies['node-session'];
  28.  
  29. if (sessionId && SESSION_STORE[sessionId]) {
  30. res.sendFile('static/home.html', {root: __dirname});
  31. } else {
  32. res.sendFile('static/login.html', {root: __dirname});
  33. }
  34.  
  35. });
  36.  
  37. app.post('/home', function (req, res) {
  38.  
  39. if (req.body.username === 'admin' && req.body.password === 'admin') {
  40.  
  41. let session = uuidv1();
  42. let _csrf = uuidv4();
  43. SESSION_STORE[session] = _csrf;
  44. res.setHeader('Set-Cookie', [`node-session=${session}`] );
  45. res.sendFile('static/home.html', {root: __dirname});
  46.  
  47. } else {
  48. res.sendFile('static/login.html', {root: __dirname});
  49. }
  50.  
  51. });
  52.  
  53. app.get('/home', function (req, res) {
  54.  
  55. if (req.cookies['node-session'] && SESSION_STORE[req.cookies['node-session']]) {
  56. res.sendFile('static/home.html', {root: __dirname});
  57. } else {
  58. res.sendFile('static/login.html', {root: __dirname});
  59. }
  60.  
  61. });
  62.  
  63. app.get('/tokens', function (req, res) {
  64.  
  65. const sessionId = req.cookies['node-session'];
  66.  
  67. if (SESSION_STORE[sessionId]) {
  68. res.json({token: SESSION_STORE[sessionId]})
  69. } else {
  70. res.status(400).end();
  71. }
  72.  
  73. });
  74.  
  75. app.post('/comments', function (req, res) {
  76.  
  77. const _csrf = req.body._csrf;
  78. const sessionId = req.cookies['node-session'];
  79.  
  80. if (SESSION_STORE[sessionId] && SESSION_STORE[sessionId] === _csrf) {
  81. res.redirect('/home.html?status=success');
  82. } else {
  83. res.redirect('/home.html?status=failed');
  84. }
  85.  
  86. });
  87.  
  88. app.post('/logout', function (req, res) {
  89.  
  90. const sessionId = req.cookies['node-session'];
  91. delete SESSION_STORE[sessionId];
  92. res.clearCookie('node-session');
  93. res.sendFile('static/login.html', {root: __dirname});
  94.  
  95. });
Add Comment
Please, Sign In to add comment