File: //var/dev/farhangmoaser/web/routes/user.js
var express = require('express'),
passport = require('passport'),
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
router = express.Router(),
UserModel = require('../models/user');
var GOOGLE_CLIENT_ID = "184976576455-riqlc7naqqke24trp0jqu79klo0u1onj.apps.googleusercontent.com";
var GOOGLE_CLIENT_SECRET = "PfptydZsKhv_j3361AFMGt3H";
var SCOPE_GOOGLE_PLUS = 'https://www.googleapis.com/auth/plus.login';
var SCOPE_GOOGLE_USERINFO = 'https://www.googleapis.com/auth/userinfo.email';
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://home.nimrouz.ir:3000/auth/google/return"
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function () {
return done(null, profile);
});
}
));
GLOBAL.onlineUsers = {};
passport.serializeUser(function(user, done) {
GLOBAL.onlineUsers[user.id] =
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
router.get(
'/google',
passport.authenticate('google', {scope: [SCOPE_GOOGLE_PLUS, SCOPE_GOOGLE_USERINFO]})
);
router.get(
'/google/return',
passport.authenticate('google', { failureRedirect: '/google/fail' }),
function(req, res) {
req.user.googleid = req.user.id;
delete req.user.id;
var user = new UserModel(req.user);
user
.save()
.then(
function(){
res.render('user/auth/google_return', user);
},
function(message) {
req.session.errmessage = message;
res.redirect('/auth/google/fail');
}
);
}
);
router.get(
'/google/fail',
function(req, res, next) {
var errmessage = '';
if(req.session.hasOwnProperty('errmessage'))
errmessage = req.session.errmessage;
res.render('user/auth/google_failure', {message: errmessage});
}
);
module.exports = router;