[TASK] Add a basic session api skeleton.

This commit is contained in:
Jan Philipp Timme 2013-09-14 23:29:45 +02:00
parent f91afabfd1
commit 11c262cb03
2 changed files with 52 additions and 4 deletions

53
app.js
View File

@ -29,17 +29,64 @@ db.exists(function(err, exists) {
//begin setting up the dashboard app
var app = express();
app.use(express.cookieParser());
app.use(express.session({
"secret": settings.general.sessionsecret
}));
//some logging for debugging
app.use(function(req, res, next) {
console.log("%s %s", req.method, req.url);
// console.log(["Session", req.session]);
next();
});
//initialize fresh session
app.use(function(req, res, next) {
if(req.session.initialized != true) {
req.session.initialized = true;
req.session.login = false;
}
next();
});
//deliver static files by default
app.use(express.static(__dirname + '/static'));
//serve random fun stuff on /ohai ;-)
app.use("/ohai", function(req, res) {
res.status(200).send("ohai!");
//API: /session
app.use("/session", function(req, res) {
res.setHeader("Content-Type", "application/json");
//refresh session
if(req.method == "GET") {
if(req.session.login == true) {
if(new Date() - req.session.lastActivity < 5 * 60 * 1000) {
req.session.lastActivity = new Date();
} else {
req.session.login = false;
}
res.send(200, JSON.stringify({
"login": req.session.login
}));
}
//check user credentials, update session data
if(req.method == "PUT") {
//TODO: implement proper login mechanism
req.session.login = true;
req.session.lastActivity = new Date();
res.send(200, JSON.stringify({
"login": req.session.login
}));
}
//destroy the session
if(req.method == "DELETE") {
req.session.login = false;
res.send(200, JSON.stringify({
"login": req.session.login
}));
}
});
//define 404 for everything else (ugly but i think it's useful)

View File

@ -6,7 +6,8 @@
"listen": {
"host": "localhost",
"port": 3000
}
},
"sessionsecret": "Ch4ngeTh1sT0Som3ThingRandom|;-)"
},
"https": {
"key": "snakeoil/privkey.pem",