aboutsummaryrefslogtreecommitdiff
path: root/config/passport.js
blob: 576f088365a1cedc036f1f25531967e747958b50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/**
 * Created by nanalelfe on 2016-07-20.
 */
var passport = require('passport');
var dbFile  = require("../node_simple.js");
var LocalStrategy = require('passport-local').Strategy;
var bcrypt = require('bcrypt-nodejs');

var encryptPassword = function (password) {
    return bcrypt.hashSync(password, bcrypt.genSaltSync(5), null);
}

var comparePassword = function (password) {
    return bcrypt.compareSync(password1, password2);
}

passport.serializeUser(function (user, done) {
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    done(err, user);
});


// fields - [email, user_name, f_name, l_name, uni, department, password, phone_num]

passport.use('local_signup', new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password',
    passReqToCallback: true
}, function(req, email, password, done){
    req.check('email', 'Invalid email address').notEmpty().isEmail();
    req.check('password', "Password is invalid").notEmpty().isLength({min: 6}).equals(req.body.confirmPassword);
    // password has to be at least 4 characters long

    var errors = req.validationErrors();
    console.log("IN PASSPORT");
    if (errors) {
       var messages = [];
        errors.forEach(function (error) {
            messages.push(error.msg);
        });
        return done(null, false, req.flash('error', messages));
    }
    var hash_pass = encryptPassword(password);

    var fields = [email, req.body.usrname, req.body.fname, req.body.lname, req.body.univ, req.body.dept, hash_pass,
        req.body.phone_num];

    dbFile.add_user(fields, function (success, error,  message) {

        if (!success && error) {
            console.log("!success && error");
            return done(message);
        }

        else if (!success && !error) {
            console.log("!success && !error");
            console.log(message);
            return done(null, false, {message: message});
        }

        else  {
            console.log("ELSE");
            return done(null, fields);
        }
    });

    // Check if username already in use
    // If not, create new user with given info
    // Encrypt the passport using bcrypt
}));

/*router.post('/signup', function(req, res, next) {
 req.check('email', 'Invalid email address').isEmail();
 req.check('password', "Password is invalid").isLength({min: 4}).equals(req.body.confirmPassword);
 // password has to be at least 4 characters long

 var errors = req.validationErrors();
 if (errors) {
 req.session.errors = errors;
 req.session.success = false;
 console.log("got here");
 res.redirect('/signup');
 } else {
 req.session.success = true;
 console.log("GOT SUCCESS");
 passport.authenticate('local_signup', {
 successRedirect: '/user_profile',
 failureRedirect: '/signup',
 failureFlash: true
 });
 }
 //res.redirect('/signup');

 });*/

/*router.post('/signup', passport.authenticate('local.signup', {
 sucessRedirect: '/profile',
 failureRedirect: '/signup',
 failureFlash: true
 }));*/