google auth
This commit is contained in:
parent
a29d5a3ede
commit
024f13996a
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ node_modules
|
||||
*.swo
|
||||
data
|
||||
*.DS_Store
|
||||
.env
|
||||
|
24
package.json
24
package.json
@ -14,16 +14,21 @@
|
||||
},
|
||||
"main": "haste",
|
||||
"dependencies": {
|
||||
"connect-ratelimit": "0.0.7",
|
||||
"connect-route": "0.1.5",
|
||||
"connect": "3.4.1",
|
||||
"st": "1.1.0",
|
||||
"winston": "0.6.2",
|
||||
"redis-url": "0.1.0",
|
||||
"redis": "0.8.1",
|
||||
"uglify-js": "1.3.3",
|
||||
"busboy": "0.2.4",
|
||||
"pg": "4.1.1"
|
||||
"connect": "3.4.1",
|
||||
"connect-ensure-login": "^0.1.1",
|
||||
"connect-query": "^0.2.0",
|
||||
"connect-ratelimit": "0.0.7",
|
||||
"connect-redirection": "0.0.1",
|
||||
"connect-route": "0.1.5",
|
||||
"dotenv": "^4.0.0",
|
||||
"nodemon": "^1.11.0",
|
||||
"pg": "4.1.1",
|
||||
"redis": "0.8.1",
|
||||
"redis-url": "0.1.0",
|
||||
"st": "1.1.0",
|
||||
"uglify-js": "1.3.3",
|
||||
"winston": "0.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "*",
|
||||
@ -49,6 +54,7 @@
|
||||
},
|
||||
"scripts": {
|
||||
"start": "node server.js",
|
||||
"start:dev": "nodemon -V --ignore 'data/*' --ignore 'Profile' --ignore 'static/application.min.js' server.js ",
|
||||
"test": "mocha -r should spec/*"
|
||||
}
|
||||
}
|
||||
|
44
server.js
44
server.js
@ -7,15 +7,21 @@ var connect = require('connect');
|
||||
var route = require('connect-route');
|
||||
var connect_st = require('st');
|
||||
var connect_rate_limit = require('connect-ratelimit');
|
||||
var passport = require('passport');
|
||||
var redirect = require('connect-redirection');
|
||||
var query = require('connect-query');
|
||||
|
||||
|
||||
require('dotenv').config();
|
||||
var DocumentHandler = require('./lib/document_handler');
|
||||
|
||||
// Load the configuration and set some defaults
|
||||
var config = JSON.parse(fs.readFileSync('./config.js', 'utf8'));
|
||||
config.port = process.env.PORT || config.port || 7777;
|
||||
config.host = process.env.HOST || config.host || 'localhost';
|
||||
config.origin = 'http://' + config.host + ":" + config.port + "/";
|
||||
|
||||
// Set up the logger
|
||||
// Set up the loggergg
|
||||
if (config.logging) {
|
||||
try {
|
||||
winston.remove(winston.transports.Console);
|
||||
@ -103,16 +109,50 @@ var documentHandler = new DocumentHandler({
|
||||
});
|
||||
|
||||
var app = connect();
|
||||
|
||||
app.use(redirect());
|
||||
app.use(query());
|
||||
// Rate limit all requests
|
||||
if (config.rateLimits) {
|
||||
config.rateLimits.end = true;
|
||||
app.use(connect_rate_limit(config.rateLimits));
|
||||
}
|
||||
|
||||
var GoogleStrategy = require('passport-google-oauth20').Strategy;
|
||||
|
||||
// and deserialized.
|
||||
passport.serializeUser(function(user, cb) {
|
||||
cb(null, user);
|
||||
});
|
||||
|
||||
passport.deserializeUser(function(obj, cb) {
|
||||
cb(null, obj);
|
||||
});
|
||||
passport.use(new GoogleStrategy({
|
||||
clientID: process.env.GOOGLE_CLIENT_ID,
|
||||
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
|
||||
callbackURL: config.origin + 'auth/google/callback'
|
||||
},
|
||||
function(accessToken, refreshToken, profile, cb) {
|
||||
winston.info('hi logged in')
|
||||
winston.info(profile);
|
||||
return cb(null, profile);
|
||||
}
|
||||
));
|
||||
|
||||
// first look at API calls
|
||||
app.use(passport.initialize());
|
||||
app.use(passport.session());
|
||||
|
||||
app.use(route(function(router) {
|
||||
// get raw documents - support getting with extension
|
||||
router.get('/', require('connect-ensure-login').ensureLoggedIn());
|
||||
router.get('/login', passport.authenticate('google', { scope: ['profile'] }));
|
||||
|
||||
router.get( '/auth/google/callback',
|
||||
passport.authenticate( 'google', { scope: ['profile'],
|
||||
successRedirect: '/loggedin',
|
||||
failureRedirect: '/auth/failure'
|
||||
}));
|
||||
router.get('/raw/:id', function(request, response, next) {
|
||||
var skipExpire = !!config.documents[request.params.id];
|
||||
var key = request.params.id.split('.')[0];
|
||||
|
Loading…
x
Reference in New Issue
Block a user