Skip to content

Instantly share code, notes, and snippets.

@boxxxie
Created November 27, 2012 18:27
Show Gist options
  • Save boxxxie/4156058 to your computer and use it in GitHub Desktop.
Save boxxxie/4156058 to your computer and use it in GitHub Desktop.
connect sessions not working
#!/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"));
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;
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