From ae07a58701ab7dbd35bacf2e0cfca8b8d971ce0a Mon Sep 17 00:00:00 2001 From: Ben Langfeld Date: Tue, 7 Apr 2015 13:22:55 -0300 Subject: [PATCH] Permit connecting with an alternative authcid This permits imitation of other users (for example, if usera@example.com is allowed to create a session as userb@example.com, he will provide the JID userb@example.com in , but use his own credentials in the the packet per SASL's separation of authzid and authcid. --- bower.json | 5 ++++- src/core.js | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/bower.json b/bower.json index 2944fb82..4b579e5a 100644 --- a/bower.json +++ b/bower.json @@ -32,9 +32,12 @@ ], "dependencies": { "jquery": "~1.11.0", - "strophe": "strophe/strophejs#1.2.1", + "strophe": "strophe/strophejs#72914b87f56cf12e5e6a40c293cb9c6397bc7d16", "strophejs-plugins": "strophe/strophejs-plugins#39d67d66e900bce8b990d9214bffe6593a96ddf7", "mustache": "0.3.0", "jquery-i18n": "1.1.1" + }, + "resolutions": { + "strophe": "72914b87f56cf12e5e6a40c293cb9c6397bc7d16" } } diff --git a/src/core.js b/src/core.js index 22962050..0531d667 100644 --- a/src/core.js +++ b/src/core.js @@ -261,8 +261,9 @@ Candy.Core = (function(self, Strophe, $) { * (String) password - Password of the user * (String) nick - Nick of the user. Set one if you want to anonymously connect but preset a nick. If jidOrHost is a domain * and this param is not set, Candy will prompt for a nick. + * (String) authcid - Authentication identity (username) if different from the JID. */ - self.connect = function(jidOrHost, password, nick) { + self.connect = function(jidOrHost, password, nick, authcid) { // Reset before every connection attempt to make sure reconnections work after authfail, alltabsclosed, ... _connection.reset(); self.registerEventHandlers(); @@ -291,7 +292,7 @@ Candy.Core = (function(self, Strophe, $) { } // authentication - _connection.connect(_getEscapedJidFromJid(jidOrHost) + '/' + _options.resource, password, Candy.Core.Event.Strophe.Connect); + _connection.connect(_getEscapedJidFromJid(jidOrHost) + '/' + _options.resource, password, Candy.Core.Event.Strophe.Connect, undefined, undefined, undefined, authcid); if (nick) { _user = new self.ChatUser(jidOrHost, nick); } else {