Guest User

Untitled

a guest
Sep 15th, 2017
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module.exports = (app) => {
  2.  
  3.     var isAdmin = (req, res, next) => {
  4.         if ((req.isAuthenticated()) && (req.user.role == "admin")) {
  5.             return next();
  6.         } else {
  7.             res.redirect('/');
  8.         }
  9.     }
  10.  
  11.     var db = require('../index.js').database;
  12.     var passport = require('passport');
  13.     var local_strategy = require('passport-local').Strategy;
  14.     var User = require('../models/User.js'); //USER MODEL
  15.  
  16.     passport.serializeUser((user, done) => {
  17.         done(null, user.id);
  18.     });
  19.  
  20.     passport.deserializeUser((id, done) => {
  21.         User.findById(id, (err, user) => {
  22.             done(err, user);
  23.         });
  24.     });
  25.  
  26.     //LOGIN STRATEGY
  27.     passport.use('login_strategy', new local_strategy({
  28.         usernameField: 'email', //THE FIELDS IN THE FORM
  29.         passwordField: 'password',
  30.         passReqToCallback: true,
  31.     }, (req, email, password, done) => {
  32.         User.findOne({
  33.             'email': email,
  34.         }, (err, user) => {
  35.             if(err) return done(err);
  36.             if(!user) return done(null, false); //USER DOESNT EXIST
  37.             if(!user.compareHash(password)) return done(null, false); //USER EXISTS, PASSWORD DIDNT MATCH
  38.  
  39.             return done(null, user);  
  40.         })
  41.     }));
  42.  
  43.     //REGISTER STRATEGY
  44.     passport.use('register_strategy', new local_strategy({
  45.         usernameField: 'email', //THE FIELDS IN THE FORM
  46.         passwordField: 'password',
  47.         passReqToCallback: true,    
  48.     }, (req, email, password, done) => {
  49.         //process.nextTick(() => {
  50.             User.findOne({
  51.                 'email': email,
  52.             }, (err, user) => {
  53.  
  54.                 if(err) return done(err);
  55.                 if(user) return done(null, false); //USER ALREADY EXISTS
  56.  
  57.                 var user = new User();
  58.                 user.email = email;
  59.                 user.password = user.generateHash(password);
  60.                 user.role = req.body.role;
  61.  
  62.                 //console.log(req.body)
  63.                 //console.log(user);
  64.  
  65.                 user.save((err) => {
  66.                     if(err) throw err;
  67.                     return done(null, user);
  68.                 })
  69.             });
  70.         //})
  71.     }));
  72.  
  73.     app.get('/login', (req, res) => {
  74.         res.render('login.ejs', {
  75.            
  76.         });
  77.     });
  78.  
  79.     app.post('/login', passport.authenticate('login_strategy'), (req, res) => {
  80.         if(req.user.role == 'admin'){
  81.             res.redirect('/client_overview');
  82.         } else {
  83.             db.collection('clients').find({'name': req.user.role }).toArray((err, clients) => {
  84.                 res.redirect('campaign_overview_client/' + clients[0]._id);
  85.             });
  86.         }
  87.     });
  88.  
  89.     app.get('/register', (req, res) => {
  90.         res.render('register.ejs', {
  91.            
  92.         });
  93.     });
  94.  
  95.     app.post('/register', passport.authenticate('register_strategy'), (req, res) => {
  96.         res.redirect('/login');
  97.     });
  98.    
  99.     app.get('/logout', (req, res) => {
  100.         req.logout();
  101.         res.redirect('/');
  102.     });
  103. }
Add Comment
Please, Sign In to add comment