Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. var express = require('express');
  2. var bodyParser = require('body-parser');
  3. var objection = require('objection');
  4. var Model = objection.Model;
  5. var Knex = require('knex');
  6. var bcrypt = require('bcrypt');
  7. var expressValidator = require('express-validator');
  8. var passport = require('passport');
  9. var cookieParser = require('cookie-parser');
  10. var session = require('express-session');
  11. var LocalStrategy = require('passport-local').Strategy;
  12. var api = express();
  13.  
  14. passport.use(new LocalStrategy(
  15. async function (username, password, done) {
  16. var user = await User.findOne(username);
  17. if (!user) {
  18. return done(null, false, {message: 'Incorrect username.'});
  19. }
  20. if (!bcrypt.compareSync(password, user.password)) {
  21. return done(null, false, {message: 'Incorrect password.'});
  22. } else {
  23. return done(null, user);
  24. }
  25. }
  26. ));
  27.  
  28. passport.serializeUser(function (user, done) {
  29. console.log("serialialize");
  30. done(null,user.id);
  31. });
  32.  
  33. passport.deserializeUser(async function (id, done) {
  34. console.log("deserialialize");
  35. let user = await User.findById(id);
  36. if (user) {
  37. done(null, user);
  38. }
  39. });
  40.  
  41. api.use((req, res, next) => {
  42. res.setHeader('Access-Control-Allow-Origin', '*');
  43. res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  44. next();
  45. });
  46.  
  47. api.use(bodyParser.json());
  48. api.use(expressValidator());
  49. api.use(cookieParser()); // required before session.
  50. api.use(session({secret: 'keyboard cat', resave: false, saveUninitialized: false}));
  51. api.use(passport.initialize());
  52. api.use(passport.session());
  53.  
  54. var knex = Knex({
  55. client: 'pg',
  56. connection: {
  57. user: 'marossmrek',
  58. password: '12345',
  59. database: 'ita-js'
  60. }
  61. });
  62.  
  63. Model.knex(knex);
  64.  
  65. class Base extends Model {
  66.  
  67. static get tableName() {
  68. return this.name.toLowerCase();
  69. }
  70.  
  71. static async findById(id) {
  72.  
  73. return await this.query().where({id: id}).limit(1).first();
  74. }
  75. }
  76.  
  77. class User extends Base {
  78.  
  79. static async findOne(username) {
  80. return await this.query().where({username: username}).limit(1).first();
  81. }
  82. }
  83.  
  84. api.post('/login',
  85. passport.authenticate('local', { failureRedirect: '/login' }),
  86. function(req, res) {
  87. console.log('Success auth');
  88. res.redirect('/');
  89. });
  90.  
  91. api.get('/logout', (req, res) => {
  92. req.logout();
  93. res.end();
  94. });
  95.  
  96. api.get('/', (req,res)=> {
  97. console.log("After redirect: " +req.user);
  98. res.end();
  99. });
  100.  
  101. api.listen(5000, () => {
  102. console.log("I listen on port 5000");
  103. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement