Advertisement
Guest User

Untitled

a guest
Nov 13th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. const storage = require('../modules/mongodb.js');
  2. const auth = require('../modules/check.js');
  3.  
  4. const express = require('express');
  5. const bodyParser = require('body-parser');
  6. const cookieParser = require('cookie-parser');
  7. const session = require('express-session');
  8. const crypto = require('crypto');
  9. const passport = require('passport');
  10. const LocalStrategy = require('passport-local').Strategy;
  11. let router = express.Router();
  12.  
  13.  
  14. router.use(express.static('public'));
  15. router.use(bodyParser.urlencoded({ extended: true }));
  16. router.use(bodyParser.json());
  17. router.use(bodyParser.urlencoded({ extended: false }));
  18. router.use(cookieParser());
  19. router.use(session({
  20. secret: 'C1a55ifi3d,!!!',
  21. resave: false,
  22. saveUninitialized: true
  23. }))
  24. router.use(passport.initialize());
  25. router.use(passport.session())
  26.  
  27. const serverSalt = "Dis iz ma Salttttt lain, sou dunno luk over hier"
  28.  
  29. function sha512(password, salt) {
  30. const hash = crypto.createHmac('sha512', salt);
  31. hash.update(password);
  32. const value = hash.digest('hex');
  33. return {
  34. salt: salt,
  35. passwordHash: value
  36. };
  37. };
  38.  
  39. passport.use(new LocalStrategy(
  40. function (username, password, done) {
  41. let hash = sha512(password, serverSalt).passwordHash;
  42. storage.getUserByLoginAndPasshash(username, hash)
  43. .then(user => {
  44. done(user ? null : 'Invalid username or password', user);
  45. });
  46. }
  47. ));
  48.  
  49. passport.serializeUser(function (user, done) {
  50. done(null, user._id);
  51. });
  52.  
  53. passport.deserializeUser(function (_id, done) {
  54. storage.getUser(_id)
  55. .then(user => {
  56. done(user ? null : 'No user', user);
  57. });
  58. });
  59.  
  60. router.get('/login',
  61. (req, res) => {
  62. const message = "";
  63. res.render('login', { message });
  64. });
  65.  
  66. router.post('/login', function (req, res, next) {
  67. if (req.body.password === "") {
  68. const message = "Wrong login or password"
  69. res.render('login', { message })
  70. } else {
  71. passport.authenticate('local', function (err, user, info) {
  72. if (err) {
  73. const message = "Wrong login or password"
  74. res.render('login', { message })
  75. } else {
  76.  
  77. req.logIn(user, function (err) {
  78. if (err) { console.log(err) }
  79. res.redirect('/');
  80. })
  81. }
  82. }
  83. )(req, res, next);
  84. }
  85. }
  86. );
  87.  
  88. router.get('/logout',
  89. auth.checkAuth,
  90. (req, res) => {
  91. req.logout();
  92. res.redirect('/');
  93. });
  94.  
  95. router.get('/admin/:id(\\d+)',
  96. auth.checkAdmin,
  97. (req, res) => {
  98. storage.usersGetAll()
  99. .then(users => res.render('admin', { users, user: req.user }))
  100. .catch(error => {
  101. console.log(error);
  102. res.sendStatus(404);
  103. });
  104. });
  105.  
  106. router.get('/profile/:id(\\d+)',
  107. auth.checkAuth,
  108. (req, res) => res.render('profile', { user: req.user }));
  109.  
  110. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement