Advertisement
Guest User

Untitled

a guest
May 14th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.48 KB | None | 0 0
  1. var LocalStrategy = require('passport-local').Strategy;
  2. var FacebookStrategy = require('passport-facebook').Strategy;
  3. var User = require('../models/login.js');
  4. var configAuth = require('./auth');
  5.  
  6. module.exports = function (passport) {
  7.  
  8. passport.serializeUser(function (user, done) {
  9. done(null, user.id);
  10. });
  11.  
  12. passport.deserializeUser(function (id, done) {
  13. User.findById(id, function (err, user) {
  14. done(err, user);
  15. });
  16. });
  17.  
  18. passport.use('local-signup', new LocalStrategy({
  19. nameField: 'name',
  20. usernameField: 'email',
  21. passwordField: 'password',
  22. passReqToCallback: true
  23. },
  24. function (req, name, email, password, done) {
  25.  
  26. User.findOne({
  27. 'local.email': email
  28. }, function (err, user) {
  29.  
  30. if (err)
  31. return done(err);
  32. if (user) {
  33. return done(null, false, req.flash('signupMessage', 'Je email bestaat al.'));
  34. } else {
  35.  
  36. var newUser = new User();
  37.  
  38. newUser.local.name = name;
  39. newUser.local.email = email;
  40. newUser.local.password = newUser.generateHash(password);
  41.  
  42. newUser.save(function (err) {
  43. if (err)
  44. throw err;
  45. return done(null, newUser);
  46. });
  47. }
  48.  
  49. });
  50.  
  51. }));
  52.  
  53. passport.use('local-login', new LocalStrategy({
  54. usernameField: 'email',
  55. passwordField: 'password',
  56. passReqToCallback: true
  57. },
  58. function (req, name, email, password, done) {
  59. User.findOne({
  60. 'local.email': email
  61. }, function (err, user) {
  62. if (err)
  63. return done(err);
  64. if (!user)
  65. return done(null, false, req.flash('loginMessage', 'De gebruiker bestaat niet. Maak een account!'));
  66. if (!user.validPassword(password))
  67. return done(null, false, req.flash('loginMessage', 'Wachtwoord is verkeerd. Probeer het opnieuw!'));
  68. return done(null, user);
  69. });
  70.  
  71. }));
  72.  
  73. var mongoose = require('mongoose'); var bcrypt = require('bcrypt-nodejs');
  74.  
  75. var userSchema = mongoose.Schema({
  76.  
  77. local : {
  78. name : String,
  79. email : String,
  80. password : String,
  81. },
  82. facebook : {
  83. id : String,
  84. token : String,
  85. email : String,
  86. name : String
  87. } });
  88.  
  89. userSchema.methods.generateHash = function(password) {
  90. return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); };
  91.  
  92. userSchema.methods.validPassword = function(password) {
  93. return bcrypt.compareSync(password, this.local.password); };
  94.  
  95. module.exports = mongoose.model('User', userSchema);
  96.  
  97. module.exports = function (app, passport) {
  98. app.get('/', function (req, res) {
  99. res.render('login.ejs', {
  100. message: req.flash('loginMessage')
  101. });
  102. });
  103.  
  104. app.get('/register', function (req, res) {
  105. res.render('index.ejs', {
  106. message: req.flash('signupMessage')
  107. });
  108. });
  109.  
  110. app.post('/', passport.authenticate('local-login', {
  111. successRedirect: '/topic',
  112. failureRedirect: '/',
  113. failureFlash: true
  114. }));
  115.  
  116. app.post('/register', passport.authenticate('local-signup', {
  117. successRedirect: '/topic',
  118. failureRedirect: '/register',
  119. failureFlash: true
  120. }));
  121.  
  122. };
  123.  
  124. <form action="/register" method="post">
  125. <div class="form-group">
  126. <input type="text" placeholder="Name" class="form-control nameForm" name="name">
  127. </div>
  128. <!-- END FORM GROUP -->
  129. <div class="form-group">
  130. <input type="text" placeholder="Email" class="form-control emailForm" name="email">
  131. </div>
  132. <!-- END FORM GROUP -->
  133. <div class="form-group">
  134. <input type="password" placeholder="Password" class="form-control" name="password">
  135. </div>
  136. <!-- END FORM GRROUP -->
  137. <button type="submit" class="btn btn-primary btn-default">Registeer</button>
  138. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement