Comparar commits
1 Commits
master
...
add-relogin
| Autor | SHA1 | Data | |
|---|---|---|---|
| 66ca116934 |
+53
-2
@@ -295,6 +295,7 @@ jsxc = {
|
||||
window.addEventListener('storage', jsxc.storage.onStorage, false);
|
||||
|
||||
$(document).on('attached.jsxc', jsxc.registerLogout);
|
||||
$(document).on('disconnected.jsxc', jsxc.relogin);
|
||||
|
||||
var isStorageAttachParameters = jsxc.storage.getItem('rid') && jsxc.storage.getItem('sid') && jsxc.storage.getItem('jid');
|
||||
var isOptionsAttachParameters = jsxc.options.xmpp.rid && jsxc.options.xmpp.sid && jsxc.options.xmpp.jid;
|
||||
@@ -303,6 +304,10 @@ jsxc = {
|
||||
// Check if we have to establish a new connection
|
||||
if ((!isStorageAttachParameters && !isOptionsAttachParameters) || isForceLoginForm) {
|
||||
|
||||
if (jsxc.relogin()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// clean up rid and sid
|
||||
jsxc.storage.removeItem('rid');
|
||||
jsxc.storage.removeItem('sid');
|
||||
@@ -414,8 +419,8 @@ jsxc = {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (jsxc.xmpp.conn && jsxc.xmpp.connected) {
|
||||
jsxc.debug('We are already connected');
|
||||
if (jsxc.xmpp.conn && jsxc.xmpp.conn.authenticated) {
|
||||
jsxc.debug('We are already connected and authenticated');
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -434,6 +439,47 @@ jsxc = {
|
||||
});
|
||||
},
|
||||
|
||||
relogin: function() {
|
||||
jsxc.debug('Try to relogin');
|
||||
|
||||
var jid = jsxc.storage.getItem('jid');
|
||||
jsxc.bid = jsxc.bid || (jid ? jsxc.jidToBid(jid) : null);
|
||||
|
||||
if (!jsxc.bid || jsxc.storage.getUserItem('forcedLogout')) {
|
||||
jsxc.debug('Logout was forced or I found no valid jid');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
var xmppOptions = jsxc.options.xmpp;
|
||||
|
||||
if (xmppOptions.url && (xmppOptions.jid || (xmppOptions.username && xmppOptions.domain)) && xmppOptions.password) {
|
||||
xmppOptions.jid = xmppOptions.jid || (xmppOptions.username + xmppOptions.domain);
|
||||
|
||||
jsxc.start(xmppOptions.jid, xmppOptions.password);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
var loadSettingsAllKnowing = jsxc.storage.getUserItem('loadSettingsAllKnowing');
|
||||
|
||||
if (xmppOptions.url && loadSettingsAllKnowing) {
|
||||
jsxc.options.loadSettings(null, null, function(settings) {
|
||||
jsxc._prepareLogin(null, null, function(settings) {
|
||||
if (settings !== false) {
|
||||
jsxc.start(jsxc.options.xmpp.jid, jsxc.options.xmpp.password);
|
||||
}
|
||||
}, settings);
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
jsxc.debug('I am not able to relogin');
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
registerLogout: function() {
|
||||
// Looking for logout element
|
||||
if (jsxc.options.logoutElement !== null && $(jsxc.options.logoutElement).length > 0) {
|
||||
@@ -571,6 +617,11 @@ jsxc = {
|
||||
jsxc.options.xmpp.jid = jid;
|
||||
jsxc.options.xmpp.password = password;
|
||||
|
||||
var tempBid = jsxc.bid;
|
||||
jsxc.bid = jsxc.jidToBid(jid);
|
||||
jsxc.storage.setUserItem('loadSettingsAllKnowing', !!jid && !!password);
|
||||
jsxc.bid = tempBid;
|
||||
|
||||
cb(settings);
|
||||
},
|
||||
|
||||
|
||||
@@ -184,6 +184,8 @@ jsxc.xmpp = {
|
||||
*/
|
||||
logout: function(complete) {
|
||||
|
||||
jsxc.storage.setUserItem('forcedLogout', true);
|
||||
|
||||
jsxc.triggeredFromElement = (typeof complete === 'boolean') ? complete : true;
|
||||
|
||||
if (!jsxc.master) {
|
||||
@@ -262,6 +264,8 @@ jsxc.xmpp = {
|
||||
var rosterVerSupport = $(jsxc.xmpp.conn.features).find('[xmlns="urn:xmpp:features:rosterver"]').length > 0;
|
||||
jsxc.storage.setUserItem('rosterVerSupport', rosterVerSupport);
|
||||
|
||||
jsxc.storage.removeUserItem('forcedLogout');
|
||||
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onConnected || 'submit') {
|
||||
case 'submit':
|
||||
@@ -460,7 +464,7 @@ jsxc.xmpp = {
|
||||
disconnected: function() {
|
||||
jsxc.debug('disconnected');
|
||||
|
||||
jsxc.storage.removeItem('jid');
|
||||
//jsxc.storage.removeItem('jid');
|
||||
jsxc.storage.removeItem('sid');
|
||||
jsxc.storage.removeItem('rid');
|
||||
jsxc.storage.removeItem('hidden');
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário