Guest User

Untitled

a guest
Feb 22nd, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. var passport = require('passport')
  2. , LocalStrategy = require('passport-local').Strategy;
  3.  
  4.  
  5. import express = require('express');
  6. var session = require('express-session');
  7. let bodyParser = require('body-parser');
  8. const router = express.Router();
  9. var bcrypt = require('bcryptjs');
  10. var cors = require('cors');
  11. import flash = require('connect-flash');
  12.  
  13. router.use(cors());
  14. router.use(flash());
  15. router.use(passport.initialize());
  16. router.use(passport.session());
  17.  
  18. var pgSession = require('connect-pg-simple')(session);
  19. router.use(session({
  20. store: new pgSession({
  21. conString : MyConn
  22. }),
  23. secret: 'mysessionsecret',
  24. resave: true,
  25. cookie: {
  26. maxAge: 7 * 24 * 60 * 60 * 1000
  27. },
  28. secure : true,
  29. proxy: true,
  30. saveUninitialized: true
  31. }));
  32.  
  33.  
  34. router.use(bodyParser.json());
  35. router.use(bodyParser.urlencoded({ extended: true }));
  36.  
  37. router.use(function (req, res, next) {
  38. res.header("Access-Control-Allow-Origin", "*");
  39. res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  40. res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  41. res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
  42. next();
  43. });
  44.  
  45. const { Pool } = require('pg');
  46. const connectionString =
  47. 'MyConn';
  48. const pool = new Pool({
  49. connectionString: connectionString,
  50. });
  51.  
  52.  
  53. passport.use(new LocalStrategy(
  54. async (username, password, done) => {
  55. console.log("Login process:", username);
  56. let client;
  57. var sql: string = "SELECT id, username, password FROM users WHERE username=$1";
  58. //client = pool.connect();
  59. try {
  60. client = await pool.connect();
  61. let result = await client.query(sql, [username]);
  62. console.log(result.rows, "Hello");
  63. var hashedPass: string = result.rows[0].password;
  64. console.log('HasedPass:', hashedPass);
  65.  
  66. bcrypt.compare(password, hashedPass, (err, res) => {
  67. if (res) {
  68. console.log('res:', res);
  69. return done(null, result.rows[0], { message: "Users" });
  70. } else {
  71. console.log('err:', err);
  72. return done(null, false, { message: 'Wrong user name or password ->' });
  73. }
  74. })
  75. } catch (e) {
  76. console.log("/login: " + e);
  77. return done(null, false, { message: 'Wrong user name or password <-'
  78. });
  79. } finally {
  80. client.release();
  81. }
  82. }));
  83.  
  84. passport.serializeUser((user, done) => {
  85. console.log("serialize:", user);
  86. done(null, user.user_id);
  87. });
  88.  
  89. passport.deserializeUser((id, done) => {
  90. console.log("deserualize:", id);
  91. // done(null, id);
  92. let client;
  93. client = pool.connect();
  94.  
  95. return client.query("SELECT id, username, password, FROM users WHERE id = $1", [id])
  96. .then((user) => {
  97. //log.debug("deserializeUser ", user);
  98. done(null, user);
  99. })
  100. .catch((err) => {
  101. done(new Error(`User with the id ${id} does not exist`));
  102. })
  103. });
  104.  
  105.  
  106. router.post('/', passport.authenticate('local', { successRedirect: '/',
  107. failureRedirect: '/login', failureFlash: true }),
  108. function (req, res) {
  109. console.log('SESSION:', req.session);
  110. if ( !req.session.views){
  111. req.session.views = 1;
  112. }else{
  113. req.session.views += 1;
  114. }
  115.  
  116. res.json({
  117. "status" : "ok",
  118. "frequency" : req.session.views
  119. });
  120. });
  121.  
  122.  
  123. export default router;
Add Comment
Please, Sign In to add comment