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;