Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var router = express.Router();
- var User = require('../models/user');
- var Facebook = require('../models/facebook');
- var session = require('express-session');
- var passport = require('passport');
- var LocalStrategy = require('passport-local').Strategy;
- var FacebookStrategy = require('passport-facebook').Strategy;
- router.get('/register', function (req, res){
- res.render('register');
- });
- router.get('/lobby', function (req, res) {
- console.log("User req "+req.user); // here I got the error user undefined
- res.render('lobby', {user: req.user});
- });
- router.get('/logfb', passport.authenticate('facebook', {scope: 'email'}));
- router.get('/logout', function (req, res) {
- req.logout();
- req.flash('success_msg', 'Zostałeś wylogowany');
- res.redirect('/');
- });
- router.get('/logfb/return', passport.authenticate('facebook', {
- successRedirect: '/users/lobby',
- failureRedirect: '/',
- failureFlash: true
- }));
- router.post('/login', passport.authenticate('local', {
- successRedirect: '/users/lobby',
- failureRedirect: '/',
- failureFlash: true
- }));
- router.post('/register', function (req, res){
- var login = req.body.login;
- var email = req.body.email;
- var password = req.body.password;
- var password2 = req.body.password2;
- //Validator
- req.checkBody('login', 'Pole login jest puste').notEmpty();
- req.checkBody('email', 'Pole email jest puste').notEmpty();
- req.checkBody('password', 'Pole hasło jest puste').notEmpty();
- req.checkBody('password2', 'Pole powtórz hasło jest puste').notEmpty();
- req.checkBody('email', 'Email nie jest poprawny').isEmail();
- req.checkBody('password2', 'Hasła nie są takie same').equals(password);
- var errors = req.validationErrors();
- if (errors) {
- res.render('register', {
- errors: errors
- });
- } else {
- var newUser = new User({
- login: login,
- email: email,
- password: password
- });
- User.test(login, function (err, user) {
- if (err) throw err;
- if (user.length > 0) {
- req.flash('error_msg', 'Nazwa użytkownka zajęta');
- res.redirect('/users/register');
- } else {
- User.createUser(newUser, function (err, user){
- if (err) throw err;
- req.flash('success_msg', 'Zarejestrowano pomyślnie');
- res.redirect('/users/register');
- });
- }
- });
- }
- });
- //Passport strategies
- passport.serializeUser(function (user, done) {
- console.log("serialize " + user); // here object user is defined and got datafrom database
- done(null, user.id);
- });
- passport.deserializeUser(function (id, done) {
- User.getUserById(id, function (err, user) {
- done(err, user);
- });
- });
- passport.use(new LocalStrategy(
- function (username, password, done) {
- User.getUserByUsername(username, function (err, user) {
- if (err) throw err;
- if (!user) {
- return done(null, false, {message: 'Błędne dane'});
- }
- User.comparePassword(password, user.password, function (err, isMatch) {
- if (err) throw err;
- if (isMatch) {
- return done(null, user);
- } else {
- return done(null, false, {message: 'Błędne dane'});
- }
- });
- });
- }));
- passport.use(new FacebookStrategy({
- clientID: xxxxxxxxxxx,
- clientSecret: 'xxxxxxxxxxx',
- callbackURL: "http://localhost:3000/users/logfb/return"
- },
- // facebook will send back the token and profile
- function (token, refreshToken, profile, done) {
- // asynchronous
- process.nextTick(function () {
- // find the user in the database based on their facebook id
- Facebook.findOne({'facebook.id': profile.id}, function (err, user) {
- // if there is an error, stop everything and return that
- // ie an error connecting to the database
- if (err) return done(err);
- // if the user is found, then log them in
- if (user) {
- return done(null, user); // user found, return that user
- } else {
- // if there is no user found with that facebook id, create them
- var newFacebook = new Facebook();
- // set all of the facebook information in our user model
- console.log(profile);
- console.log("****************");
- newFacebook.facebook.id = profile.id; // set the users facebook id
- newFacebook.facebook.token = token; // we will save the token that facebook provides to the user
- newFacebook.facebook.name = profile.displayName;//profile.name.givenName + ' ' + profile.name.familyName;; // look at the passport user profile to see how names are returned
- // newFacebook.facebook.email = profile.emails[0].value; // facebook can return multiple emails so we'll take the first
- // save our user to the database
- newFacebook.save(function (err) {
- if (err)
- throw err;
- // if successful, return the new user
- return done(null, newFacebook);
- });
- }
- });
- });
- }));
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement