Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module.exports = (app) => {
- var isAdmin = (req, res, next) => {
- if ((req.isAuthenticated()) && (req.user.role == "admin")) {
- return next();
- } else {
- res.redirect('/');
- }
- }
- var db = require('../index.js').database;
- var passport = require('passport');
- var local_strategy = require('passport-local').Strategy;
- var User = require('../models/User.js'); //USER MODEL
- passport.serializeUser((user, done) => {
- done(null, user.id);
- });
- passport.deserializeUser((id, done) => {
- User.findById(id, (err, user) => {
- done(err, user);
- });
- });
- //LOGIN STRATEGY
- passport.use('login_strategy', new local_strategy({
- usernameField: 'email', //THE FIELDS IN THE FORM
- passwordField: 'password',
- passReqToCallback: true,
- }, (req, email, password, done) => {
- User.findOne({
- 'email': email,
- }, (err, user) => {
- if(err) return done(err);
- if(!user) return done(null, false); //USER DOESNT EXIST
- if(!user.compareHash(password)) return done(null, false); //USER EXISTS, PASSWORD DIDNT MATCH
- return done(null, user);
- })
- }));
- //REGISTER STRATEGY
- passport.use('register_strategy', new local_strategy({
- usernameField: 'email', //THE FIELDS IN THE FORM
- passwordField: 'password',
- passReqToCallback: true,
- }, (req, email, password, done) => {
- //process.nextTick(() => {
- User.findOne({
- 'email': email,
- }, (err, user) => {
- if(err) return done(err);
- if(user) return done(null, false); //USER ALREADY EXISTS
- var user = new User();
- user.email = email;
- user.password = user.generateHash(password);
- user.role = req.body.role;
- //console.log(req.body)
- //console.log(user);
- user.save((err) => {
- if(err) throw err;
- return done(null, user);
- })
- });
- //})
- }));
- app.get('/login', (req, res) => {
- res.render('login.ejs', {
- });
- });
- app.post('/login', passport.authenticate('login_strategy'), (req, res) => {
- if(req.user.role == 'admin'){
- res.redirect('/client_overview');
- } else {
- db.collection('clients').find({'name': req.user.role }).toArray((err, clients) => {
- res.redirect('campaign_overview_client/' + clients[0]._id);
- });
- }
- });
- app.get('/register', (req, res) => {
- res.render('register.ejs', {
- });
- });
- app.post('/register', passport.authenticate('register_strategy'), (req, res) => {
- res.redirect('/login');
- });
- app.get('/logout', (req, res) => {
- req.logout();
- res.redirect('/');
- });
- }
Add Comment
Please, Sign In to add comment