Advertisement
Guest User

route

a guest
Jul 19th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var router = express.Router();
  3. var User = require('../models/user');
  4. var Facebook = require('../models/facebook');
  5. var session = require('express-session');
  6. var passport = require('passport');
  7. var LocalStrategy = require('passport-local').Strategy;
  8. var FacebookStrategy = require('passport-facebook').Strategy;
  9.  
  10.     router.get('/register', function (req, res){
  11.         res.render('register');
  12.     });
  13.  
  14.     router.get('/lobby', function (req, res) {
  15.         console.log("User req "+req.user); // here I got the error user undefined
  16.         res.render('lobby', {user: req.user});
  17.     });
  18.  
  19.     router.get('/logfb', passport.authenticate('facebook', {scope: 'email'}));
  20.  
  21.     router.get('/logout', function (req, res) {
  22.         req.logout();
  23.         req.flash('success_msg', 'Zostałeś wylogowany');
  24.         res.redirect('/');
  25.     });
  26.  
  27.  
  28. router.get('/logfb/return', passport.authenticate('facebook', {
  29.     successRedirect: '/users/lobby',
  30.     failureRedirect: '/',
  31.     failureFlash: true
  32. }));
  33.  
  34.     router.post('/login', passport.authenticate('local', {
  35.         successRedirect: '/users/lobby',
  36.         failureRedirect: '/',
  37.         failureFlash: true
  38.     }));
  39.  
  40.  
  41.     router.post('/register', function (req, res){
  42.         var login = req.body.login;
  43.         var email = req.body.email;
  44.         var password = req.body.password;
  45.         var password2 = req.body.password2;
  46.  
  47.         //Validator
  48.         req.checkBody('login', 'Pole login jest puste').notEmpty();
  49.         req.checkBody('email', 'Pole email jest puste').notEmpty();
  50.         req.checkBody('password', 'Pole hasło jest puste').notEmpty();
  51.         req.checkBody('password2', 'Pole powtórz hasło jest puste').notEmpty();
  52.         req.checkBody('email', 'Email nie jest poprawny').isEmail();
  53.         req.checkBody('password2', 'Hasła nie są takie same').equals(password);
  54.  
  55.  
  56.         var errors = req.validationErrors();
  57.         if (errors) {
  58.             res.render('register', {
  59.                 errors: errors
  60.             });
  61.         } else {
  62.             var newUser = new User({
  63.                 login: login,
  64.                 email: email,
  65.                 password: password
  66.             });
  67.             User.test(login, function (err, user) {
  68.                 if (err) throw err;
  69.                 if (user.length > 0) {
  70.                     req.flash('error_msg', 'Nazwa użytkownka zajęta');
  71.                     res.redirect('/users/register');
  72.                 } else {
  73.                     User.createUser(newUser, function (err, user){
  74.                         if (err) throw err;
  75.                         req.flash('success_msg', 'Zarejestrowano pomyślnie');
  76.                         res.redirect('/users/register');
  77.                     });
  78.                 }
  79.             });
  80.         }
  81.     });
  82.  
  83.  
  84.  
  85. //Passport strategies
  86. passport.serializeUser(function (user, done) {
  87.     console.log("serialize " + user); // here object user is defined and got datafrom database
  88.     done(null, user.id);
  89. });
  90.  
  91. passport.deserializeUser(function (id, done) {
  92.     User.getUserById(id, function (err, user) {
  93.         done(err, user);
  94.     });
  95. });
  96.  
  97. passport.use(new LocalStrategy(
  98.     function (username, password, done) {
  99.         User.getUserByUsername(username, function (err, user) {
  100.             if (err) throw err;
  101.             if (!user) {
  102.                 return done(null, false, {message: 'Błędne dane'});
  103.             }
  104.             User.comparePassword(password, user.password, function (err, isMatch) {
  105.                 if (err) throw err;
  106.                 if (isMatch) {
  107.                     return done(null, user);
  108.                 } else {
  109.                     return done(null, false, {message: 'Błędne dane'});
  110.                 }
  111.             });
  112.         });
  113.     }));
  114.  
  115. passport.use(new FacebookStrategy({
  116.         clientID: xxxxxxxxxxx,
  117.         clientSecret: 'xxxxxxxxxxx',
  118.         callbackURL: "http://localhost:3000/users/logfb/return"
  119.     },
  120.     // facebook will send back the token and profile
  121.     function (token, refreshToken, profile, done) {
  122.         // asynchronous
  123.         process.nextTick(function () {
  124.             // find the user in the database based on their facebook id
  125.             Facebook.findOne({'facebook.id': profile.id}, function (err, user) {
  126.                 // if there is an error, stop everything and return that
  127.                 // ie an error connecting to the database
  128.                 if (err) return done(err);
  129.                 // if the user is found, then log them in
  130.                 if (user) {
  131.                     return done(null, user); // user found, return that user
  132.                 } else {
  133.                     // if there is no user found with that facebook id, create them
  134.                     var newFacebook = new Facebook();
  135.                     // set all of the facebook information in our user model
  136.                     console.log(profile);
  137.                     console.log("****************");
  138.                     newFacebook.facebook.id = profile.id; // set the users facebook id
  139.                     newFacebook.facebook.token = token; // we will save the token that facebook provides to the user
  140.                     newFacebook.facebook.name = profile.displayName;//profile.name.givenName + ' ' + profile.name.familyName;; // look at the passport user profile to see how names are returned
  141.                     // newFacebook.facebook.email = profile.emails[0].value; // facebook can return multiple emails so we'll take the first
  142.                     // save our user to the database
  143.                     newFacebook.save(function (err) {
  144.                         if (err)
  145.                             throw err;
  146.                         // if successful, return the new user
  147.                         return done(null, newFacebook);
  148.                     });
  149.                 }
  150.             });
  151.         });
  152.  
  153.     }));
  154.  
  155.  
  156. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement