Created
November 27, 2012 18:27
-
-
Save boxxxie/4156058 to your computer and use it in GitHub Desktop.
connect sessions not working
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
var configuration = require('configvention'); | |
var fs = require('fs'); | |
var express = require('express'); | |
var connect = require('connect'); | |
var app = express(); | |
var http = require('http'); | |
var request = require('request'); | |
var path = require('path'); | |
var Q = require('q'); | |
var _ = require('underscore'); | |
require('underscore_extended'); | |
var MemoryStore = connect.session.MemoryStore; | |
var session_store = new MemoryStore; | |
function resetCookieExpire(req,res,next){ | |
var hour = 3600000; | |
req.session.cookie.expires = new Date(Date.now() + hour); | |
req.session.cookie.maxAge = hour; | |
} | |
app.use(connect.bodyParser()); | |
app.use(connect.cookieParser()); | |
app.use(connect.session({ | |
key : "enginuity-session", | |
secret : "eg", | |
store : session_store, | |
proxy : true | |
//cookie : | |
}) | |
); | |
function log_sessions(req,res,next){ | |
console.log('session_store', session_store.sessions); | |
next(); | |
} | |
app.use(log_sessions); | |
var serverMode = (function(mode) { | |
var serverMode = { | |
raw: mode, | |
isDebug: mode === "debug", | |
isDevelopment: mode === "dev", | |
isProduction: mode === "production" | |
}; | |
return serverMode; | |
}(configuration.get("mode"))); | |
console.log("web-api serverMode", serverMode); | |
function api_proxy(req,res){ | |
const proxy_url = configuration.get("api") + req.url; | |
console.log('proxy_url', proxy_url); | |
var api_req = req.pipe(request(proxy_url)) | |
.on('error',function(error){ | |
console.error(error); | |
res.send(error).end(); | |
}) | |
api_req.pipe(res); | |
} | |
// ## CORS middleware | |
// | |
// see: http://stackoverflow.com/questions/7067966/how-to-allow-cors-in-express-nodejs | |
console.log('running program in mode', configuration.get('mode')); | |
var allowCrossDomain = function(req, res, next) { | |
//res.header('eg-options',req.method); | |
console.log('allowCrossDomain',req.method); | |
if(serverMode.isDebug || serverMode.isDevelopment){ | |
res.header('Access-Control-Allow-Origin', "http://enginuitygroup.dev:8000"); | |
res.header('Access-Control-Allow-Credentials', true); | |
//res.header('Access-Control-Max-Age', "60") | |
} | |
else { | |
res.header('Access-Control-Allow-Origin', "https://enginuitygroup.com"); | |
res.header('Access-Control-Max-Age', "3600") | |
} | |
// Kept these for now, should probably be moved to nginx too? | |
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); | |
//FIX had a lot of trouble getting CORS working with "Authorization" | |
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, x-requested-with'); | |
// intercept OPTIONS method | |
if ('OPTIONS' === req.method) { | |
res.status(200); | |
res.end(); | |
} | |
else { | |
next(); | |
} | |
}; | |
app.enabled('trust proxy'); | |
//app.use(express.methodOverride()); | |
app.use(allowCrossDomain); | |
const url_manager = require('./urls.js') | |
.dependancies(configuration.get('api')); | |
app.post('/login', | |
require('./routes/login/post.js') | |
.dependancies(url_manager)) | |
app.get('/login', | |
require('./routes/login/get.js') | |
.dependancies(url_manager)) | |
app.use(express.errorHandler()); | |
//app.all('*', api_proxy); | |
app.listen(configuration.get("port")); | |
console.log('Listening on port', configuration.get("port")); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express'); | |
var Q = require('q'); | |
var request = require('request'); | |
var utils = require('./utils'); | |
var _ = require('underscore'); | |
function main(urls){ | |
return function (req,res,next){ | |
console.log('login POST') | |
console.log('req.auth',req.auth); | |
console.log('session', req.session); | |
Q.ncall(request.post, null, { | |
url: urls.api.session.post, | |
form: req.auth | |
}) | |
.spread(utils.get_user_data(urls)) | |
.spread(utils.setup_session(req,res)) | |
.fail(next) | |
.done(); | |
} | |
} | |
var middleware = { | |
dependancies: function(urls){ | |
return [ | |
main(urls), | |
utils.no_op | |
]; | |
} | |
} | |
module.exports = middleware; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express'); | |
var Q = require('q'); | |
var request = require('request'); | |
var _ = require('underscore'); | |
var get_user_data = function(urls){ | |
return function (login_response){ | |
const cookie = login_response.headers['set-cookie']; | |
console.log('get_user_data', cookie); | |
return Q.ncall(request.get, null, | |
{ | |
url: urls.api.session.get, | |
headers : {'set-cookie':cookie}, | |
json:true | |
}); | |
} | |
} | |
function setup_session(req,res){ | |
return function(api_response){ | |
req.session.user = api_response.body; | |
//req.session.save(_.identity); | |
console.log('setup_session',req.session) | |
res.status(200); | |
res.send(req.session.user); | |
res.end(); | |
return; | |
} | |
} | |
function no_op(req,res){}; | |
exports.no_op = no_op; | |
exports.respond = respond; | |
exports.get_user_data = get_user_data; | |
exports.setup_session = setup_session; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment