Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2016
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.91 KB | None | 0 0
  1. var LocalStrategy = require('passport-local').Strategy;
  2. var common = require('../routes/common');
  3.  
  4.  
  5. // load up the user model
  6. var User = require('../model/user');
  7.  
  8.  
  9.  
  10.  
  11. module.exports = function(passport) {
  12. console.log("passport is working upto here");
  13.  
  14. //
  15. // passport session setup
  16. // required for persistent login sessions
  17. // passport needs ability to serialize and deserialize users out of session
  18.  
  19.  
  20. // used to serialize the user for the session
  21. passport.serializeUser(function(user, done) {
  22. done(null, user.id);
  23. });
  24.  
  25.  
  26. // used to deserialize the user
  27. passport.deserializeUser(function(id, done) {
  28. User.findById(id, function(err, user) {
  29. done(err, user);
  30. });
  31. });
  32.  
  33. //
  34. // LOCAL SIGNUP
  35. //
  36. // we are using named strategies since we have one for login and one for signup
  37. // by default, if there was no name, it would just be called 'local'
  38. //
  39. // LOCAL LOGIN
  40. //
  41. // we are using named strategies since we have one for login and one for signup
  42. // by default, if there was no name, it would just be called 'local'
  43.  
  44. passport.use('local-login', new LocalStrategy({
  45. // by default, local strategy uses username and password, we will override with email
  46. usernameField : 'email',
  47. passwordField : 'password',
  48. passReqToCallback : true // allows us to pass back the entire request to the callback
  49. },
  50. function(req, username, password, done) { // callback with email and password from our form
  51. console.log('getting into callback');
  52. // find a user whose email is the same as the forms email
  53. // we are checking to see if the user trying to login already exists
  54. User.findOne({ 'username' : username }, function(err, user) {
  55. // if there are any errors, return the error before anything else
  56. console.log(user);
  57. if (err)
  58. return done(err);
  59.  
  60. // if no user is found, return the message
  61. if (!user)
  62. return done(null, false, req.flash('loginMessage', 'No user found.')); // req.flash is the way to set flashdata using connect-flash
  63.  
  64. // if the user is found but the password is wrong
  65. if (!user.validPassword(password))
  66. return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); // create the loginMessage and save it to session as flashdata
  67.  
  68. // all is well, return successful user
  69. return done(null, user);
  70. });
  71.  
  72. }));
  73.  
  74. };
  75.  
  76. var express = require('express');
  77. var path = require('path');
  78. var favicon = require('serve-favicon');
  79. var logger = require('morgan');
  80. var cookieParser = require('cookie-parser');
  81. var bodyParser = require('body-parser');
  82. var session =require('session');
  83. var passport = require('passport');
  84. var common = require('./routes/common');
  85. require('./config/passport')(passport);
  86.  
  87.  
  88.  
  89. var app = express();
  90.  
  91.  
  92.  
  93. //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  94. app.use(logger('dev'));
  95. app.use(bodyParser.json());
  96. app.use(bodyParser.urlencoded({
  97. extended: false
  98. }));
  99. app.use(cookieParser());
  100. app.use(express.static(path.join(__dirname, 'public')));
  101. //app.use(express.session({ secret: 'medicoshereisaquestionbank' }));
  102. app.use(passport.initialize());
  103. app.use(passport.session());
  104.  
  105.  
  106.  
  107.  
  108. //Routing
  109.  
  110. var routes = require('./routes/index');
  111. var users = require('./routes/users');
  112. var registerUser = require('./routes/registeruser');
  113. var postquestion = require('./routes/postquestion');
  114.  
  115.  
  116. //Database connection verification
  117. app.db = common.conn;
  118. app.db.on('error', console.error.bind(console, 'mongoose connection error: error '));
  119.  
  120. app.db.once('open', function () {
  121. console.log('db connection established to medicoshere database ');
  122.  
  123.  
  124. //and... we have a data store
  125. //console.log(app.db);
  126. });
  127.  
  128.  
  129.  
  130.  
  131. //Fixing the modules for a routes.....
  132. app.use('/', routes);
  133. app.use('/users', users);
  134. app.use('/register', registerUser);
  135. app.use('/postquestion', postquestion);
  136. app.post('/login', passport.authenticate('local-login', {
  137. faliureRedirect: '/login'
  138. }),function(req, res) {
  139. res.redirect('/');
  140. });
  141.  
  142.  
  143.  
  144. // catch 404 and forward to error handler
  145. app.use(function (req, res, next) {
  146. var err = new Error('Not Found');
  147. err.status = 404;
  148. next(err);
  149. });
  150.  
  151. // error handlers
  152.  
  153. // development error handler
  154. // will print stacktrace
  155. if (app.get('env') === 'development') {
  156. app.use(function (err, req, res, next) {
  157. res.status(err.status || 500);
  158. res.send('error', {
  159. message: err.message,
  160. error: err
  161. });
  162. });
  163. }
  164.  
  165. // production error handler
  166. // no stacktraces leaked to user
  167. app.use(function (err, req, res, next) {
  168. res.status(err.status || 500);
  169. res.send('error', {
  170. message: err.message,
  171. error: {}
  172. });
  173. });
  174.  
  175.  
  176. module.exports = app;
  177.  
  178. // Node Module dependencies
  179. var express = require('express');
  180.  
  181. // Local Module dependencies
  182. var common = require('../routes/common.js');
  183. var bcrypt = require('bcrypt-nodejs');
  184.  
  185. //var request = require('request');
  186. common.mong = global.Promise;
  187.  
  188.  
  189.  
  190.  
  191. //common.autoIncrement.initialize(common.conn);
  192.  
  193. //---------------Schema Definitions---------------------//
  194. var userSchema = common.Schema({
  195.  
  196. username: String,
  197. password:String,
  198. email:String,
  199. gender: {
  200. type: String,
  201. enum: ['male', 'female'],
  202. default: 'male'
  203. },
  204. contact: Number,
  205. profile_pic: String,
  206. address: String,
  207. role: String,
  208. dob: {
  209. type: Date,
  210. default: Date.now
  211. },
  212. collage_name: String,
  213. course: String,
  214. roll: String,
  215. specialization: String
  216.  
  217. });
  218. userSchema.methods.generateHash = function (password) {
  219. return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
  220. };
  221.  
  222. // checking if password is valid
  223. userSchema.methods.validPassword = function (password) {
  224. return bcrypt.compareSync(password, this.local.password);
  225. };
  226.  
  227.  
  228. var User = common.conn.model('User', userSchema);
  229. module.exports = User;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement