summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn McLear <john@mclear.co.uk>2013-04-04 01:00:54 +0100
committerJohn McLear <john@mclear.co.uk>2013-04-04 01:00:54 +0100
commit78d1c5746f8c92f51a6e97fe3344af693d897de0 (patch)
treec8e876e5cd7b605db8e1827dbef07a7608bc3627
parent35d84144dbdc4986ed5b6aa6e2e27a47f5295828 (diff)
parent29beda8ebd0f009d5a7dfcc64ff308058edc7f7c (diff)
downloadetherpad-lite-78d1c5746f8c92f51a6e97fe3344af693d897de0.zip
Merge branch 'develop' of github.com:ether/etherpad-lite into develop
-rw-r--r--src/node/handler/PadMessageHandler.js29
-rw-r--r--src/static/js/pad.js12
2 files changed, 30 insertions, 11 deletions
diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js
index 954c116d..85efb008 100644
--- a/src/node/handler/PadMessageHandler.js
+++ b/src/node/handler/PadMessageHandler.js
@@ -151,7 +151,6 @@ exports.handleMessage = function(client, message)
var handleMessageHook = function(callback){
var dropMessage = false;
-
// Call handleMessage hook. If a plugin returns null, the message will be dropped. Note that for all messages
// handleMessage will be called, even if the client is not authorized
hooks.aCallAll("handleMessage", { client: client, message: message }, function ( err, messages ) {
@@ -204,17 +203,29 @@ exports.handleMessage = function(client, message)
//check permissions
function(callback)
{
-
- // If the message has a padId we assume the client is already known to the server and needs no re-authorization
- if(!message.padId)
- return callback();
+ // client tried to auth for the first time (first msg from the client)
+ if(message.type == "CLIENT_READY") {
+ // Remember this information since we won't
+ // have the cookie in further socket.io messages.
+ // This information will be used to check if
+ // the sessionId of this connection is still valid
+ // since it could have been deleted by the API.
+ sessioninfos[client.id].auth =
+ {
+ sessionID: message.sessionID,
+ padID: message.padId,
+ token : message.token,
+ password: message.password
+ };
+ }
// Note: message.sessionID is an entirely different kind of
- // session from the sessions we use here! Beware! FIXME: Call
- // our "sessions" "connections".
+ // session from the sessions we use here! Beware!
+ // FIXME: Call our "sessions" "connections".
// FIXME: Use a hook instead
// FIXME: Allow to override readwrite access with readonly
- securityManager.checkAccess(message.padId, message.sessionID, message.token, message.password, function(err, statusObject)
+ var auth = sessioninfos[client.id].auth;
+ securityManager.checkAccess(auth.padID, auth.sessionID, auth.token, auth.password, function(err, statusObject)
{
if(ERR(err, callback)) return;
@@ -265,7 +276,7 @@ exports.handleCustomObjectMessage = function (msg, sessionID, cb) {
if(sessionID){ // If a sessionID is targeted then send directly to this sessionID
socketio.sockets.socket(sessionID).json.send(msg); // send a targeted message
}else{
- socketio.sockets.in(msg.data.padId).json.send(msg); // broadcast to all clients on this pad
+ socketio.sockets.in(msg.data.payload.padId).json.send(msg); // broadcast to all clients on this pad
}
}
cb(null, {});
diff --git a/src/static/js/pad.js b/src/static/js/pad.js
index 01f1bbcb..504bc21e 100644
--- a/src/static/js/pad.js
+++ b/src/static/js/pad.js
@@ -252,14 +252,22 @@ function handshake()
socket.on('message', function(obj)
{
//the access was not granted, give the user a message
- if(!receivedClientVars && obj.accessStatus)
+ if(obj.accessStatus)
{
- $('.passForm').submit(require(module.id).savePassword);
+ if(!receivedClientVars)
+ $('.passForm').submit(require(module.id).savePassword);
if(obj.accessStatus == "deny")
{
$('#loading').hide();
$("#permissionDenied").show();
+
+ if(receivedClientVars)
+ {
+ // got kicked
+ $("#editorcontainer").hide();
+ $("#editorloadingbox").show();
+ }
}
else if(obj.accessStatus == "needPassword")
{