changeset 61598dd887d9 in sao:default
details: https://hg.tryton.org/sao?cmd=changeset;node=61598dd887d9
description:
Restore stored session after first login dialog
If we find a session once the user has filled the database and login,
we should
try it first. If it does not work the first request will trigger the
renewal
process.
issue8948
review262701002
diffstat:
src/session.js | 36 +++++++++++++++++++++---------------
1 files changed, 21 insertions(+), 15 deletions(-)
diffs (75 lines):
diff -r c60a4c38e2af -r 61598dd887d9 src/session.js
--- a/src/session.js Tue Jan 21 00:34:55 2020 +0100
+++ b/src/session.js Tue Jan 21 00:42:15 2020 +0100
@@ -16,18 +16,7 @@
this.prm = jQuery.when(); // renew promise
this.database = database;
this.login = login;
- if (this.database) {
- var session_data = localStorage.getItem(
- 'sao_session_' + database);
- if (session_data !== null) {
- session_data = JSON.parse(session_data);
- if (!this.login || this.login == session_data.login) {
- this.login = session_data.login;
- this.user_id = session_data.user_id;
- this.session = session_data.session;
- }
- }
- }
+ this.restore();
this.context = {
client: Sao.Bus.id,
};
@@ -38,8 +27,9 @@
get_auth: function() {
return utoa(this.login + ':' + this.user_id + ':' + this.session);
},
- do_login: function(login, parameters) {
+ do_login: function(parameters) {
var dfd = jQuery.Deferred();
+ var login = this.login;
var func = function(parameters) {
return {
'method': 'common.db.login',
@@ -102,6 +92,20 @@
jQuery.extend(this.context, context);
}.bind(this));
},
+ restore: function() {
+ if (this.database && !this.session) {
+ var session_data = localStorage.getItem(
+ 'sao_session_' + this.database);
+ if (session_data !== null) {
+ session_data = JSON.parse(session_data);
+ if (!this.login || this.login == session_data.login) {
+ this.login = session_data.login;
+ this.user_id = session_data.user_id;
+ this.session = session_data.session;
+ }
+ }
+ }
+ },
store: function() {
var session = {
'login': this.login,
@@ -189,7 +193,9 @@
dialog.button.prop('disabled', true);
dialog.modal.modal('hide');
session.database = database;
- session.do_login(login)
+ session.login = login;
+ session.restore();
+ (session.session ? jQuery.when() : session.do_login())
.then(function() {
dfd.resolve(session);
dialog.modal.remove();
@@ -246,7 +252,7 @@
}
var dfd = jQuery.Deferred();
session.prm = dfd.promise();
- session.do_login(session.login).then(dfd.resolve, function() {
+ session.do_login().then(dfd.resolve, function() {
Sao.logout();
dfd.reject();
}).done(function () {