From 3944a0e79b21802aecf10457d9e44f1fc644a278 Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 20 May 2015 01:05:53 +0100 Subject: [PATCH] more read only mode fixes andadd support for handleMessageSecurity hook --- src/node/handler/PadMessageHandler.js | 11 +++++++++++ src/static/js/pad.js | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index e15af1a4..9a0d1ee7 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -190,6 +190,16 @@ exports.handleMessage = function(client, message) } var handleMessageHook = function(callback){ + // Allow plugins to bypass the readonly message blocker + hooks.aCallAll("handleMessageSecurity", { client: client, message: message }, function ( err, messages ) { + if(ERR(err, callback)) return; + _.each(messages, function(newMessage){ + if ( newMessage === true ) { + thisSession.readonly = false; + } + }); + }); + 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 @@ -204,6 +214,7 @@ exports.handleMessage = function(client, message) // If no plugins explicitly told us to drop the message, its ok to proceed if(!dropMessage){ callback() }; }); + } var finalHandler = function () { diff --git a/src/static/js/pad.js b/src/static/js/pad.js index b865fa64..bb06162a 100644 --- a/src/static/js/pad.js +++ b/src/static/js/pad.js @@ -325,6 +325,9 @@ function handshake() if(clientVars.readonly){ $('#myusernameedit').attr("disabled", true); $('#chatinput').attr("disabled", true); + $('#chaticon').hide(); + $('#options-chatandusers').parent().hide(); + $('#options-stickychat').parent().hide(); } $("body").addClass(clientVars.readonly ? "readonly" : "readwrite")