Advertisement
PhantomD

users.js

Aug 3rd, 2018
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var router = express.Router();
  3. const bodyParser = require('body-parser');
  4. var passport = require('passport');
  5. var authController = require('../controllers/authcontroller.js');
  6. var bCrypt = require('bcrypt-nodejs')
  7.  
  8. module.exports = (app, db) => {
  9.  
  10.   //Third-party middelware
  11.   router.use(bodyParser.json());
  12.   router.use(bodyParser.urlencoded({
  13.     extended: true
  14.   }));
  15.  
  16.   /* GET Signin to the website */
  17.   app.get('/users/signin', authController.signin);
  18.  
  19.   /* GET Signup */
  20.   app.get('/users/signup', authController.signup);
  21.  
  22.   /* CREATE an account */
  23.   app.post('/users/signup', (req, res) => {
  24.  
  25.     var generateHash = function (password) {
  26.       return bCrypt.hashSync(password, bCrypt.genSaltSync(8), null);
  27.     };
  28.  
  29.     db.users.findOne({ $or: [{ 'local.email': req.body.email }, { 'local.username': req.body.username }] }, function (err, user) {
  30.       if (err) {
  31.         return res.send(err);
  32.       }
  33.       if (user) {
  34.         if (user.local.email == req.body.email) {
  35.           return res.send("This email is already taken.")
  36.         }
  37.         return res.send("This username is already taken.")
  38.       }
  39.       else {
  40.         var userData = new User();
  41.         var userPassword = generateHash(req.body.password);
  42.  
  43.         userData.local.username = req.body.username;
  44.         userData.local.name = req.body.name;
  45.         userData.local.firstname = req.body.firstname;
  46.         userData.local.email = req.body.email;
  47.         userData.local.location = req.body.location;
  48.         userData.local.type = req.body.type;
  49.         userData.local.password = userPassword;
  50.  
  51.         userData.save()
  52.           .then(item => {
  53.             res.send("item saved to database")
  54.             // `req.user` contains the authenticated user.
  55.             // res.redirect('/profile/' + req.body.username);
  56.           })
  57.           .catch(err => {
  58.             console.log(err);
  59.             res.status(400).send("unable to save to database");
  60.           })
  61.       }
  62.     })
  63.   })
  64.  
  65.   /*TEST IF User is logged in*/
  66.   function isLoggedIn(req, res, next) {
  67.     if (req.isAuthenticated())
  68.       return next();
  69.     //TODO
  70.     res.redirect('Signin again');
  71.   }
  72.  
  73.   app.get('/users/dashboard', isLoggedIn, authController.dashboard);
  74.  
  75.   app.get('/users/logout', authController.logout);
  76.  
  77.   /* POST Login user*/
  78.   app.post('/users/login', function (req, res, next) {
  79.     passport.authenticate('local-login', function (err, user, info) {
  80.       if (err) { return next(err); }
  81.       if (!user) { return res.send(info.message); }
  82.       req.logIn(user, function (err) {
  83.         if (err) { return next(err); }
  84.         return res.send(user.local.username);
  85.       });
  86.     })(req, res, next);
  87.   });
  88.  
  89.   /* GET a User by name */
  90.   app.get('/users/getUser/:username', function (req, res) {
  91.     const username = req.params.username;
  92.  
  93.     db.users.find({
  94.       where: { username: username }
  95.     }).then(user => {
  96.       res.json(user);
  97.     });
  98.   });
  99.  
  100.   /* GET all users */
  101.   app.get('/users', function (req, res) {
  102.     db.users.findAll()
  103.       .then(users => {
  104.         res.json(users);
  105.       });
  106.   });
  107.  
  108.   // Update single user
  109.   app.patch('/users/updateUser/:user_id', (req, res) => {
  110.     const user_id = req.params.user_id;
  111.     const updates = req.body.updates;
  112.  
  113.     db.users.find({
  114.       where: { user_id: user_id }
  115.     })
  116.       .then(user => {
  117.         return user.updateAttributes(updates)
  118.       })
  119.       .then(updatedUser => {
  120.         res.json(updatedUser);
  121.       });
  122.   });
  123.  
  124.   // DELETE single user
  125.   app.delete('/users/deleteUser/:user_id', (req, res) => {
  126.     const user_id = req.params.user_id;
  127.  
  128.     db.users.destroy({
  129.       where: { user_id: user_id }
  130.     })
  131.       .then(deletedUser => {
  132.         res.json(deletedUser);
  133.       });
  134.   });
  135. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement