Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var LocalStrategy = require('passport-local').Strategy;
- var common = require('../routes/common');
- // load up the user model
- var User = require('../model/user');
- module.exports = function(passport) {
- console.log("passport is working upto here");
- //
- // passport session setup
- // required for persistent login sessions
- // passport needs ability to serialize and deserialize users out of session
- // used to serialize the user for the session
- passport.serializeUser(function(user, done) {
- done(null, user.id);
- });
- // used to deserialize the user
- passport.deserializeUser(function(id, done) {
- User.findById(id, function(err, user) {
- done(err, user);
- });
- });
- //
- // LOCAL SIGNUP
- //
- // we are using named strategies since we have one for login and one for signup
- // by default, if there was no name, it would just be called 'local'
- //
- // LOCAL LOGIN
- //
- // we are using named strategies since we have one for login and one for signup
- // by default, if there was no name, it would just be called 'local'
- passport.use('local-login', new LocalStrategy({
- // by default, local strategy uses username and password, we will override with email
- usernameField : 'email',
- passwordField : 'password',
- passReqToCallback : true // allows us to pass back the entire request to the callback
- },
- function(req, username, password, done) { // callback with email and password from our form
- console.log('getting into callback');
- // find a user whose email is the same as the forms email
- // we are checking to see if the user trying to login already exists
- User.findOne({ 'username' : username }, function(err, user) {
- // if there are any errors, return the error before anything else
- console.log(user);
- if (err)
- return done(err);
- // if no user is found, return the message
- if (!user)
- return done(null, false, req.flash('loginMessage', 'No user found.')); // req.flash is the way to set flashdata using connect-flash
- // if the user is found but the password is wrong
- if (!user.validPassword(password))
- return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); // create the loginMessage and save it to session as flashdata
- // all is well, return successful user
- return done(null, user);
- });
- }));
- };
- var express = require('express');
- var path = require('path');
- var favicon = require('serve-favicon');
- var logger = require('morgan');
- var cookieParser = require('cookie-parser');
- var bodyParser = require('body-parser');
- var session =require('session');
- var passport = require('passport');
- var common = require('./routes/common');
- require('./config/passport')(passport);
- var app = express();
- //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
- app.use(logger('dev'));
- app.use(bodyParser.json());
- app.use(bodyParser.urlencoded({
- extended: false
- }));
- app.use(cookieParser());
- app.use(express.static(path.join(__dirname, 'public')));
- //app.use(express.session({ secret: 'medicoshereisaquestionbank' }));
- app.use(passport.initialize());
- app.use(passport.session());
- //Routing
- var routes = require('./routes/index');
- var users = require('./routes/users');
- var registerUser = require('./routes/registeruser');
- var postquestion = require('./routes/postquestion');
- //Database connection verification
- app.db = common.conn;
- app.db.on('error', console.error.bind(console, 'mongoose connection error: error '));
- app.db.once('open', function () {
- console.log('db connection established to medicoshere database ');
- //and... we have a data store
- //console.log(app.db);
- });
- //Fixing the modules for a routes.....
- app.use('/', routes);
- app.use('/users', users);
- app.use('/register', registerUser);
- app.use('/postquestion', postquestion);
- app.post('/login', passport.authenticate('local-login', {
- faliureRedirect: '/login'
- }),function(req, res) {
- res.redirect('/');
- });
- // catch 404 and forward to error handler
- app.use(function (req, res, next) {
- var err = new Error('Not Found');
- err.status = 404;
- next(err);
- });
- // error handlers
- // development error handler
- // will print stacktrace
- if (app.get('env') === 'development') {
- app.use(function (err, req, res, next) {
- res.status(err.status || 500);
- res.send('error', {
- message: err.message,
- error: err
- });
- });
- }
- // production error handler
- // no stacktraces leaked to user
- app.use(function (err, req, res, next) {
- res.status(err.status || 500);
- res.send('error', {
- message: err.message,
- error: {}
- });
- });
- module.exports = app;
- // Node Module dependencies
- var express = require('express');
- // Local Module dependencies
- var common = require('../routes/common.js');
- var bcrypt = require('bcrypt-nodejs');
- //var request = require('request');
- common.mong = global.Promise;
- //common.autoIncrement.initialize(common.conn);
- //---------------Schema Definitions---------------------//
- var userSchema = common.Schema({
- username: String,
- password:String,
- email:String,
- gender: {
- type: String,
- enum: ['male', 'female'],
- default: 'male'
- },
- contact: Number,
- profile_pic: String,
- address: String,
- role: String,
- dob: {
- type: Date,
- default: Date.now
- },
- collage_name: String,
- course: String,
- roll: String,
- specialization: String
- });
- userSchema.methods.generateHash = function (password) {
- return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
- };
- // checking if password is valid
- userSchema.methods.validPassword = function (password) {
- return bcrypt.compareSync(password, this.local.password);
- };
- var User = common.conn.model('User', userSchema);
- module.exports = User;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement