Guest User

Untitled

a guest
Aug 24th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. const express = require('express');
  2. const router = express.Router();
  3. const passport = require('passport');
  4. const jwt = require('jsonwebtoken');
  5. const config = require('../config/database');
  6. const User = require('../models/user');
  7.  
  8. // Register view
  9. router.get('/register', function (req, res) {
  10. res.render('register');
  11. });
  12.  
  13. // Register
  14. router.post('/register', (req, res, next) => {
  15. let newUser = new User({
  16. name: req.body.name,
  17. email: req.body.email,
  18. username: req.body.username,
  19. password: req.body.password
  20. });
  21.  
  22. User.addUser(newUser, (err, user) => {
  23. if (err) {
  24. res.json({
  25. success: false,
  26. msg: 'Failed to register user'
  27. });
  28. } else {
  29. res.json({
  30. success: true,
  31. msg: 'User registered'
  32. });
  33. }
  34. });
  35. });
  36.  
  37. // Login view
  38. router.get('/login', function (req, res) {
  39. res.render('login');
  40. });
  41.  
  42. // Login
  43. router.post('/login', (req, res, next) => {
  44. const username = req.body.username;
  45. const password = req.body.password;
  46.  
  47. User.getUserByUsername(username, (err, user) => {
  48. if (err) throw err;
  49. if (!user) {
  50. return res.json({
  51. success: false,
  52. msg: 'User not found'
  53. });
  54. }
  55.  
  56. User.comparePassword(password, user.password, (err, isMatch) => {
  57. if (err) throw err;
  58. if (isMatch) {
  59. const token = jwt.sign({
  60. data: user
  61. }, config.secret, {
  62. expiresIn: 604800 // 1 week
  63. });
  64.  
  65. res.json({
  66. success: true,
  67. token: `Bearer ${token}`,
  68. user: {
  69. id: user._id,
  70. name: user.name,
  71. username: user.username,
  72. email: user.email
  73. }
  74. });
  75. res.header('Authorization', "Bearer " + token);
  76. } else {
  77. return res.json({
  78. success: false,
  79. msg: 'Wrong password'
  80. });
  81. }
  82. });
  83. });
  84. });
  85.  
  86. // Profile
  87. router.get('/profile', passport.authenticate('jwt', {
  88. session: false
  89. }), (req, res, next) => {
  90. res.json({
  91. user: req.user
  92. });
  93. });
  94.  
  95.  
  96.  
  97. module.exports = router;
  98.  
  99. const JwtStrategy = require('passport-jwt').Strategy;
  100. const ExtractJwt = require('passport-jwt').ExtractJwt;
  101. const User = require('../models/user');
  102. const config = require('../config/database');
  103.  
  104. module.exports = function(passport){
  105. let opts = {};
  106. opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
  107. opts.secretOrKey = config.secret;
  108. passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
  109. User.getUserById(jwt_payload.data._id, (err, user) => {
  110. if(err){
  111. return done(err, false);
  112. }
  113.  
  114. if(user){
  115. return done(null, user);
  116. } else {
  117. return done(null, false);
  118. }
  119. });
  120. }));
  121. }
Add Comment
Please, Sign In to add comment