Comparar commits

...

1 Commits

Autor SHA1 Mensagem Data
sualko 66ca116934 add automatic login 2017-06-29 16:12:51 +02:00
2 arquivos alterados com 58 adições e 3 exclusões
+53 -2
Ver Arquivo
@@ -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);
},
+5 -1
Ver Arquivo
@@ -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');