google auth
This commit is contained in:
parent
a29d5a3ede
commit
024f13996a
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ node_modules
|
|||||||
*.swo
|
*.swo
|
||||||
data
|
data
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
|
.env
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
"host": "0.0.0.0",
|
|
||||||
"port": 7777,
|
"port": 7777,
|
||||||
|
|
||||||
"keyLength": 10,
|
"keyLength": 10,
|
||||||
|
24
package.json
24
package.json
@ -14,16 +14,21 @@
|
|||||||
},
|
},
|
||||||
"main": "haste",
|
"main": "haste",
|
||||||
"dependencies": {
|
"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",
|
"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": {
|
"devDependencies": {
|
||||||
"mocha": "*",
|
"mocha": "*",
|
||||||
@ -49,6 +54,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node server.js",
|
"start": "node server.js",
|
||||||
|
"start:dev": "nodemon -V --ignore 'data/*' --ignore 'Profile' --ignore 'static/application.min.js' server.js ",
|
||||||
"test": "mocha -r should spec/*"
|
"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 route = require('connect-route');
|
||||||
var connect_st = require('st');
|
var connect_st = require('st');
|
||||||
var connect_rate_limit = require('connect-ratelimit');
|
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');
|
var DocumentHandler = require('./lib/document_handler');
|
||||||
|
|
||||||
// Load the configuration and set some defaults
|
// Load the configuration and set some defaults
|
||||||
var config = JSON.parse(fs.readFileSync('./config.js', 'utf8'));
|
var config = JSON.parse(fs.readFileSync('./config.js', 'utf8'));
|
||||||
config.port = process.env.PORT || config.port || 7777;
|
config.port = process.env.PORT || config.port || 7777;
|
||||||
config.host = process.env.HOST || config.host || 'localhost';
|
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) {
|
if (config.logging) {
|
||||||
try {
|
try {
|
||||||
winston.remove(winston.transports.Console);
|
winston.remove(winston.transports.Console);
|
||||||
@ -103,16 +109,50 @@ var documentHandler = new DocumentHandler({
|
|||||||
});
|
});
|
||||||
|
|
||||||
var app = connect();
|
var app = connect();
|
||||||
|
app.use(redirect());
|
||||||
|
app.use(query());
|
||||||
// Rate limit all requests
|
// Rate limit all requests
|
||||||
if (config.rateLimits) {
|
if (config.rateLimits) {
|
||||||
config.rateLimits.end = true;
|
config.rateLimits.end = true;
|
||||||
app.use(connect_rate_limit(config.rateLimits));
|
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
|
// first look at API calls
|
||||||
|
app.use(passport.initialize());
|
||||||
|
app.use(passport.session());
|
||||||
|
|
||||||
app.use(route(function(router) {
|
app.use(route(function(router) {
|
||||||
// get raw documents - support getting with extension
|
// 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) {
|
router.get('/raw/:id', function(request, response, next) {
|
||||||
var skipExpire = !!config.documents[request.params.id];
|
var skipExpire = !!config.documents[request.params.id];
|
||||||
var key = request.params.id.split('.')[0];
|
var key = request.params.id.split('.')[0];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user