Advertisement
Guest User

Untitled

a guest
Sep 15th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement