Guest User

Untitled

a guest
Feb 5th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. var express = require('express')
  2. var cors = require('cors')
  3. var bodyParser = require('body-parser')
  4. var session = require('express-session')
  5. var hash = require('pbkdf2-password')()
  6.  
  7. var app = express()
  8.  
  9. app.use(session({
  10. resave: false,
  11. saveUninitialized: false,
  12. secret: 'shhhh, very secret'
  13. }))
  14.  
  15. var jsonParser = bodyParser.json()
  16.  
  17. var users = {
  18. admin: {
  19. name: 'admin'
  20. }
  21. }
  22.  
  23. hash({ password: 'secret' }, (err, pass, salt, hash) => {
  24. if (err) throw err
  25. users.admin.salt = salt
  26. users.admin.hash = hash
  27. })
  28.  
  29. var auth = (name, password, callback) => {
  30. const user = users[name]
  31. if (!user) return callback(new Error('cannot find user'))
  32. hash({ password, salt: user.salt }, (err, pass, salt, hash) => {
  33. if (err) return callback(err)
  34. if (hash === user.hash) return callback(null, user)
  35. callback(new Error('invalid password'))
  36. })
  37. }
  38.  
  39. var checkAuth = (req, res, next) => {
  40. if (req.session.user) {
  41. next()
  42. } else {
  43. res.json({
  44. status: 'FAIL',
  45. error: 'login is required'
  46. })
  47. }
  48. }
  49.  
  50. app.use(cors())
  51.  
  52. app.post('/login', jsonParser, (req, res) => {
  53. if (!req.body) return res.sendStatus(400)
  54. auth(req.body.username, req.body.password, (err, user) => {
  55. if (err || !user) {
  56. res.json({
  57. status: 'FAIL',
  58. error: 'invalid username or password'
  59. })
  60. return
  61. }
  62.  
  63. req.session.regenerate(() => {
  64. req.session.user = user
  65. res.json({
  66. status: 'OK'
  67. })
  68. })
  69. })
  70. })
  71.  
  72. app.post('/logout', jsonParser, (req, res) => {
  73. req.session.destroy(() => {
  74. res.json({
  75. status: 'OK'
  76. })
  77. })
  78. })
  79.  
  80. app.post('/command', checkAuth, jsonParser, (req, res) => {
  81. ...
  82. })
Add Comment
Please, Sign In to add comment