Advertisement
Guest User

Untitled

a guest
Dec 5th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var User = require('../models/user');
  2.  
  3. var jwt = require('jsonwebtoken');
  4. var jwtSecret = 'jwtSecret';
  5.  
  6. module.exports = function(router){
  7.  
  8. // user registration
  9. // =================
  10. router.post('/users', function(req,res){
  11.     var user = new User();
  12.     user.username = req.body.username;
  13.     user.password = req.body.password;
  14.     user.email = req.body.email;
  15.     if(req.body.username == null || req.body.username == '' || req.body.password == null || req.body.password == '' || req.body.email == null || req.body.email == ''){
  16.         res.json({
  17.             success: false,
  18.             message: 'Ensure filling user information correctly!'
  19.         })
  20.     }
  21.     else{
  22.         user.save(function(err){
  23.             if(err){
  24.                 res.json({
  25.                     success: false,
  26.                     message: 'Username or Email already exists!'
  27.                 })
  28.             } else {
  29.                 res.json({
  30.                 success: true,
  31.                 message: 'User created!'
  32.             });
  33.         }
  34.         });
  35.     }
  36.     });
  37.    
  38. // user login
  39. // ==========
  40. router.post('/authenticate', function(req,res){
  41.     User.findOne({
  42.         username: req.body.username
  43.     }).select('email username password')
  44.     .exec(function(err,user){
  45.         if(err) throw err;
  46.  
  47.         if(!user){
  48.             res.json({ success: false, message: 'Could not authenticate'});
  49.         }
  50.         else if (user){
  51.             if(req.body.password){
  52.                 var validPassword = user.comparePassword(req.body.password);
  53.             }
  54.             else {
  55.                 res.json({
  56.                     success: false,
  57.                     message: 'No password provided'
  58.                 })
  59.             }
  60.            
  61.                 if(!validPassword){
  62.                     res.json({
  63.                         success: false,
  64.                         message: 'Could not authenticate password'
  65.                             });
  66.                 }
  67.                 else{
  68.                     var token = jwt.sign({
  69.                         username: user.username,
  70.                         email: user.email,
  71.                     }, jwtSecret, {expiresIn: '3h'});
  72.                     res.json({
  73.                         success: true,
  74.                         message: 'User successfully authenticated',
  75.                         token: token
  76.                     });
  77.                 }
  78.         }  
  79.     });
  80. });
  81.  
  82. // grabbing our JWT, 3 possible ways
  83. // =================================
  84. router.use(function(req,res,next){
  85.     var token = req.body.token || req.body.query || req.headers['x-access-token'];
  86.  
  87.     if(token){
  88.         jwt.verify(token, jwtSecret, function(err, decoded){
  89.             if(err){
  90.                 res.json({
  91.                     success: false,
  92.                     message: 'Invalid token'
  93.                 });
  94.             } else{
  95.                 req.decoded = decoded;
  96.                 next();
  97.             }
  98.         });
  99.     }  
  100.     else{
  101.         res.json({
  102.             success: false,
  103.             message: 'no token detected'
  104.         });
  105.     }
  106. });
  107. // get
  108. router.post('/me', function(req,res){
  109.     res.send(req.decoded);
  110. });
  111.  
  112.  
  113.     return router;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement