Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var jwt = require('jsonwebtoken');
  3. var bCrypt = require('bcrypt-nodejs');
  4. var db = require('../config/db')
  5. var mongoose = require('mongoose');
  6. var token = require('../config/token');
  7. const R = require('ramda');
  8. var router = express.Router();
  9.  
  10. var User = mongoose.model('User');
  11.  
  12. var login = (username, password) => {
  13.   console.log('[LOGIN] (%s, %s)', username, password);
  14.   return new Promise((resolve, reject) => {
  15.     if(R.equals(username, '') || R.equals(password, '')) {
  16.       reject({success: false, message: 'Username or password empty.'})
  17.     }
  18.     User.findOne({email: username}, (err, user) => {
  19.       if (err) reject({success: false, message: err})
  20.       if (R.equals(user, undefined)) reject({success: false, message: 'User not found.'})
  21.       if(isValidPassword(user, password)) {
  22.         var data = {
  23.           id: user._id,
  24.           name: user.name,
  25.           surname: user.surname,
  26.           email: user.email,
  27.         }
  28.         var t = jwt.sign(data, token.TOKEN_SECRET, { expiresIn: token.TOKEN_EXPIRATION })
  29.         resolve({success: true, message: 'Login successful', token: t})
  30.       } else {
  31.         reject({success: false, message: 'Login failed'})
  32.       }
  33.     })
  34.   })
  35. }
  36.  
  37. var signup = (email, password, name, surname) => {
  38.   return new Promise((resolve, reject) => {
  39.     User.findOne({'email': email}, (err, user) => {
  40.       if(err) reject({success: false, message: err})
  41.       if(user) reject({success: false, message: "Email aready in use."})
  42.       else {
  43.         var newUser = new User();
  44.         newUser.email = email;
  45.         newUser.password = createHash(password);
  46.         newUser.name = name
  47.         newUser.surname = surname
  48.         newUser.role = 1;
  49.         newUser.save()
  50.           .then(() => resolve({id: newUser._id}))
  51.           .catch((err) => reject({success: false, message: err}))
  52.       }
  53.     });
  54.   })
  55. }
  56.  
  57. router.post('/login', (req, res) => {
  58.   login(req.body.username, req.body.password)
  59.     .then((result) => {return res.json(result)})
  60.     .catch((error) => {return res.json(error)})
  61. });
  62.  
  63. router.post('/signup', (req, res) => {
  64.   signup(req.body.email, req.body.password, req.body.name, req.body.surname)
  65.     .then((result) => {return res.json(result)})
  66.     .catch((error) => {return res.json(error)})
  67. })
  68.  
  69. const isValidPassword = (user, password) => {
  70.   return bCrypt.compareSync(password, user.password);
  71. }
  72.  
  73. // Generates hash using bCrypt
  74. const createHash = (password) => {
  75.   return bCrypt.hashSync(password, bCrypt.genSaltSync(10), null);
  76. }
  77.  
  78. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement