Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var jwt = require('jsonwebtoken');
- var bCrypt = require('bcrypt-nodejs');
- var db = require('../config/db')
- var mongoose = require('mongoose');
- var token = require('../config/token');
- const R = require('ramda');
- var router = express.Router();
- var User = mongoose.model('User');
- var login = (username, password) => {
- console.log('[LOGIN] (%s, %s)', username, password);
- return new Promise((resolve, reject) => {
- if(R.equals(username, '') || R.equals(password, '')) {
- reject({success: false, message: 'Username or password empty.'})
- }
- User.findOne({email: username}, (err, user) => {
- if (err) reject({success: false, message: err})
- if (R.equals(user, undefined)) reject({success: false, message: 'User not found.'})
- if(isValidPassword(user, password)) {
- var data = {
- id: user._id,
- name: user.name,
- surname: user.surname,
- email: user.email,
- }
- var t = jwt.sign(data, token.TOKEN_SECRET, { expiresIn: token.TOKEN_EXPIRATION })
- resolve({success: true, message: 'Login successful', token: t})
- } else {
- reject({success: false, message: 'Login failed'})
- }
- })
- })
- }
- var signup = (email, password, name, surname) => {
- return new Promise((resolve, reject) => {
- User.findOne({'email': email}, (err, user) => {
- if(err) reject({success: false, message: err})
- if(user) reject({success: false, message: "Email aready in use."})
- else {
- var newUser = new User();
- newUser.email = email;
- newUser.password = createHash(password);
- newUser.name = name
- newUser.surname = surname
- newUser.role = 1;
- newUser.save()
- .then(() => resolve({id: newUser._id}))
- .catch((err) => reject({success: false, message: err}))
- }
- });
- })
- }
- router.post('/login', (req, res) => {
- login(req.body.username, req.body.password)
- .then((result) => {return res.json(result)})
- .catch((error) => {return res.json(error)})
- });
- router.post('/signup', (req, res) => {
- signup(req.body.email, req.body.password, req.body.name, req.body.surname)
- .then((result) => {return res.json(result)})
- .catch((error) => {return res.json(error)})
- })
- const isValidPassword = (user, password) => {
- return bCrypt.compareSync(password, user.password);
- }
- // Generates hash using bCrypt
- const createHash = (password) => {
- return bCrypt.hashSync(password, bCrypt.genSaltSync(10), null);
- }
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement