Skip to content
This repository has been archived by the owner on Apr 14, 2023. It is now read-only.

Commit

Permalink
Gestion sessions avec websocket
Browse files Browse the repository at this point in the history
  • Loading branch information
nicompte committed Sep 27, 2011
1 parent 6ae1ce3 commit 1c75b59
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 29 deletions.
2 changes: 1 addition & 1 deletion public/scripts/belote.js
@@ -1,4 +1,4 @@
var socket = io.connect('http://cosson-games.nicompte.c9.io/belote');
var socket = io.connect('http://cosson-games.nicompte.c9.io');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
Expand Down
10 changes: 10 additions & 0 deletions views/login.jade
@@ -0,0 +1,10 @@
h2 Login
form(method='post', action='/login')
div
label Login
input(name='username', type='text')
div
label Password
input(name='password', type='password')
div
input(type='submit', value='Login')
14 changes: 7 additions & 7 deletions views/stackoverflow/layout.jade
@@ -1,10 +1,10 @@
!!!5
html(lang = 'en')
head
title = title
link(rel = "stylesheet", type = "text/css", href = "/stylesheets/stackoverflow.css")
script(type = 'text/javascript', src = '/socket.io/socket.io.js')
script(type = 'text/javascript', src = '/scripts/mootools-core-1.4.0-full-nocompat.js')
script(type = 'text/javascript'
head
title = title
link(rel = "stylesheet", type = "text/css", href = "/stylesheets/stackoverflow.css")
script(type = 'text/javascript', src = '/socket.io/socket.io.js')
script(type = 'text/javascript', src = '/scripts/mootools-core-1.4.0-full-nocompat.js')
script(type = 'text/javascript'
src = '/scripts/belote.js')
body!= body
body!= body
79 changes: 58 additions & 21 deletions web.js
Expand Up @@ -3,68 +3,80 @@ express = require("express"),
stylus = require("stylus"),
io = require("socket.io"),
connections = {};
//const parseCookie = require('connect').utils.parseCookie;

parseCookie = require('connect').utils.parseCookie;

//var deckModel = require("./models/Deck.js").Deck();

//var deck = new deckModel(32);

var app = express.createServer(), io = io.listen(app);

app.configure(function() {
app.set ('view engine', 'jade');
app.use( stylus.middleware({
this.set ('view engine', 'jade');
this.use( stylus.middleware({
src: __dirname + "/views",
dest: __dirname + "/public",
compress: true
}));
/*
this.use(express.bodyParser());
this.use(express.cookieParser());
this.sessionStore = new express.session.MemoryStore({ reapInterval: 60000 * 10 });
this.use(express.session({
"secret": "some private string",
"store": this.sessionStore
secret: "Cosson forever",
key: "express.sid",
sessionStore: this.sessionStore
}));
*/
app.use (express.static(__dirname + '/public'));
this.use(express.static(__dirname + '/public'));
});

/* Middleware for limited access */
/*
function requireLogin (req, res, next) {
if (req.session.username) {
next();
} else {
res.redirect("/");
res.redirect("/login");
}
}
*/

/* Home page (requires authentication) */
app.get('/secured', /*[requireLogin],*/ function (req, res/*, next*/) {

app.get('/secured', [requireLogin], function (req, res, next) {
res.send('Accès sécurisé');
});

app.get('/', function(req, res){
res.send('Vive Nico');
});

app.get('/belote/:template', function(req, res){
app.get('/belote/:template', [requireLogin], function(req, res){
res.render(req.params.template+'/index', { title: 'Cosson games' });
});

app.get('/login', function(req, res){
res.render('login', { title: 'Login' });
});

app.post('/login', function(req, res){
if(!req.body.username || !req.body.password){
res.render('login', { title: 'Login', error: 'Please enter login information' });
}else{
if(req.body.username == 'nbarbotte' && req.body.password == 'mdp'){
req.session.username = req.body.username;
res.redirect("/secured");
//res.render('stackoverflow/index', { title: 'Cosson games' });
}
}
});
/*
io.of('/belote').on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
*/
/*
io.configure(function (){
io.set('authorization', function (handshakeData, callback) {
var cookies = parseCookie(handshakeData.headers.cookie);
//console.log(cookies);
var sessionID = null;//cookies['connect.sid'];
console.log(cookies);
var sessionID = cookies['connect.sid'];
if (!sessionID) {
callback('No session', false);
} else {
Expand All @@ -80,8 +92,33 @@ io.configure(function (){
}
});
});
*/

io.set('authorization', function (data, accept) {
if (data.headers.cookie) {
data.cookie = parseCookie(data.headers.cookie);
console.log(data.cookie);
data.sessionID = data.cookie['express.sid'];
if(!data.sessionID) return accept('Not logged in.', false);
app.sessionStore.get(data.sessionID, function (err, session) {
if (!err && session && session.username) {
data.username = session.username;
callback(null, true);
} else {
return accept('Not logged in.', false);
}
});
} else {
return accept('No cookie transmitted.', false);
}
accept(null, true);
});

io.sockets.on('connection', function (socket) {
console.log('A socket with sessionID ' + socket.handshake.sessionID
+ ' connected!');
});
/*
io.on('connection', function (socket) {
var sessionID = socket.handshake.sessionID;
var username = socket.handshake.username;
Expand Down

0 comments on commit 1c75b59

Please sign in to comment.