var express = require('express'); var router = express.Router(); var exphbs = require('express-handlebars'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var cand = require('../models/cand'); // var jobs = require('jobs'); var mongoose = require('mongoose'); var upload = require('express-fileupload'); // Register router.get('/candidate-register' , function(req,res){ res.render('candidate-register'); }); // login router.get('/candidate-login' , function(req,res){ res.render('candidate-login'); }); //add jobs // router.get('/addjob' , function(req,res){ // res.render('addjob'); // }); // Register router.post('/candidate-register' , function(req,res){ var fname = req.body.fname; var lname = req.body.lname; var email = req.body.email; var phnno = req.body.phnno; var password = req.body.password; var password2 = req.body.password2; var username = req.body.username; if(req.files){ console.log(req.files); var file = req.files.filename; filename= file.name; file.mv("./uploads/" + filename , function(err){ if(err){ req.flash('error' , " error while uploading resume"); if( file.mimetype != 'application/pdf') { req.flash('error', "file must be a pdf"); } } }) } //validations req.checkBody('fname' , 'first name is required').notEmpty(); req.checkBody('lname' , 'last name is required').notEmpty(); req.checkBody('email' , 'email is not valid').isEmail(); req.checkBody('phnno' , 'phnno is required').isMobilePhone(); req.checkBody('password' , 'password is required').notEmpty(); req.checkBody('password2' , 'passwords do not match').equals(req.body.password); req.checkBody('username' , 'username name is required').notEmpty(); var errors = req.validationErrors(); if(errors && errors.length > 0) { return res.render('company-register' ,{ errors:errors }); // console.log('yes...'); } else{ var newcand = new cand({ _id: new mongoose.Types.ObjectId(), fname: fname, lname: lname, email: email, phnno: phnno, password: password, username: username }); cand.createUser(newcand, function(err, cand){ if(err && err.code == 11000 || err && err.name == 'MongoError') { // console.log(err, err.name, err.message, err.code); // res.render('company-register' ,{ // errors:errors // }); console.log("GOt Error"); req.flash("error", "email already registered"); res.redirect('/users/company-register'); return ; } console.log(cand); req.flash('success_msg' , 'you are registered and can now login'); res.redirect('/users/company-login'); }); } // console.log(fname); }); // router.post('/addjob' , function(req,res){ // var company = req.body.company; // var job = req.body.job; // var details = req.body.details; //validations // req.checkBody('company' , 'company name is required').notEmpty(); // req.checkBody('job' , 'post name is required').notEmpty(); // req.checkBody('details' , 'details are required').notEmpty(); // var errors = req.validationErrors(); // if(errors) // { // res.render('addjob' ,{ // errors:errors // }); // // console.log('yes...'); // } // else{ // var newJob = new Jobs({ // _id: new mongoose.Types.ObjectId(), // company:company, // job:job, // details:details // }); // newJob.save(function(err){ // if(err) throw err; // console.log(newJob); // }); // req.flash('success_msg' , 'job added!! '); // res.redirect('/users/addjob'); // } // newJob.save(function(err) { // if (err) throw err; // console.log('Jobs'); // }); // router.get('/' , function(req,res){ // Jobs.find({}) // .exec(function(err , job){ // if (err) throw err; // else{ // res.json(job); // } // }) // }); // var applybtn = document.querySelector('#applybtn'); // applybtn.addEventListener('click', function(){ // router.post( function(req,res){ // var company = apple; // var newUser = new User({ // _id: new mongoose.Types.ObjectId(), // company:company // }); // }); // //job application // router.post( function(req,res){ // var company = apple; // }); //declare this strategy as local-cand instead of local passport.use('local-cand', new LocalStrategy( function(username, password, done) { cand.getUserByEmail(username , function(err , usr){ if(err) throw err; if(!usr){ return done(null , false , {message: 'Unknown User'}); } cand.comparePassword(password , usr.password , function(err , isMatch){ if(err) throw err; if(isMatch){ return done(null , usr); } else{ return done(null ,false , {message: 'INVALID PASSWORD!!'}); } }); }); })); // passport.serializeUser(function(cand, done) { // done(null, cand.id); // }); // passport.deserializeUser(function(id, done) { // User.getUserById(id, function(err, cand) { // done(err, cand); // }); // }); router.post('/candidate-login', passport.authenticate('local-cand', {successRedirect:'/', failureRedirect:'/users/candidate-login', failureFlash: true}), function(req, res) { // If this function gets called, authentication was successful. // `req.user` contains the authenticated user. req.session.userType = 'cand'; res.redirect('/'); }); router.get('/logout' , function(req , res){ req.logout(); req.flash('success_msg' , 'you are logged out'); res.redirect('/users/candidate-login'); }); module.exports = router