Advertisement
Guest User

Untitled

a guest
Mar 4th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Created by edisoni on 04.03.16.
  3.  */
  4.  
  5. var express = require('express');
  6. var app = express();
  7. var port = process.env.PORT || 3000;
  8.  
  9. const jwt = require('jsonwebtoken');
  10. const passport = require('passport');
  11. const Strategy = require('passport-local');
  12. var morgan = require('morgan');
  13.  
  14. app.use(morgan('combined'))
  15. app.use(passport.initialize());
  16.  
  17. passport.use(new Strategy(
  18.     function (username, password, done) {
  19.         console.log(username);
  20.         // database dummy - find user and verify password
  21.         if (username === 'Edisoni' && password === '666') {
  22.             done(null, {
  23.                 id: 666,
  24.                 firstname: 'Edisoni',
  25.                 lastname: 'name',
  26.                 email: 'edi@mail.ru',
  27.                 verified: true
  28.             });
  29.         }
  30.         else {
  31.             done(null, false);
  32.         }
  33.     }
  34. ));
  35.  
  36.  
  37.  
  38. function serialize(req, res, next) {
  39.     console.log('serialize');
  40.     db.updateOrCreate(req.user, function(err, user){
  41.         if(err) {return next(err);}
  42.         // we store the updated information in req.user again
  43.         req.user = {
  44.             id: user.id
  45.         };
  46.         next();
  47.     });
  48. }
  49.  
  50. const db = {
  51.     updateOrCreate: function(user, cb){
  52.         // db dummy, we just cb the user
  53.         cb(null, user);
  54.     }
  55. };
  56.  
  57. function generateToken(req, res, next) {
  58.     req.token = jwt.sign({
  59.         id: req.user.id,
  60.     }, 'server secret', {
  61.         expiresInMinutes: 120
  62.     });
  63.     next();
  64. }
  65.  
  66. function respond(req, res) {
  67.     res.status(200).json({
  68.         user: req.user,
  69.         token: req.token
  70.     });
  71. }
  72.  
  73. app.post('/auth',
  74.     passport.authenticate( 'local', {
  75.             session: false
  76.         }), serialize, generateToken, respond);
  77.  
  78.  
  79.  
  80.  
  81. app.listen(port, function () {
  82.     console.log('Listening on port ', port)
  83. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement