diff --git a/tryton/sao/src/sao.js b/tryton/sao/src/sao.js index bc6b3659..d495b9ad 100644 --- a/tryton/sao/src/sao.js +++ b/tryton/sao/src/sao.js @@ -649,6 +649,10 @@ var Sao = { Sao.logout = function() { var session = Sao.Session.current_session; + if (!session || !session.session) { + // Do not save states if there is no session + Sao.main_menu_screen = null; + } Sao.Tab.tabs.close(true).done(function() { jQuery('#user-preferences').empty(); jQuery('#global-search').empty(); @@ -1153,6 +1157,27 @@ var Sao = { } jQuery(document).ready(function() { + var url = new URL(window.location); + if (url.searchParams.has('session')) { + var database = url.searchParams.get('database'); + var session = { + login_service: url.searchParams.get('login_service'), + login: url.searchParams.get('login'), + user_id: parseInt(url.searchParams.get('user_id'), 10), + session: url.searchParams.get('session'), + }; + if (url.searchParams.has('renew')) { + var renew_id = parseInt(url.searchParams.get('renew'), 10); + if (session.user_id !== renew_id) { + window.close(); + return; + } + } + session = JSON.stringify(session); + localStorage.setItem('sao_session_' + database, session); + window.close(); + return; + } set_shortcuts(); try { Notification.requestPermission(); diff --git a/tryton/sao/src/session.js b/tryton/sao/src/session.js index 5f4753fc..dfb01dcd 100644 --- a/tryton/sao/src/session.js +++ b/tryton/sao/src/session.js @@ -10,6 +10,7 @@ Sao.Session = Sao.class_(Object, { init: function(database, login) { + this.login_service = null; this.user_id = null; this.session = null; this.cache = new Cache(); @@ -124,6 +125,7 @@ if (session_data !== null) { session_data = JSON.parse(session_data); if (!this.login || this.login == session_data.login) { + this.login_service = session_data.login_service; this.login = session_data.login; this.user_id = session_data.user_id; this.session = session_data.session; @@ -215,6 +217,11 @@ 'name': 'login', 'placeholder': Sao.i18n.gettext('User name') }); + dialog.button = jQuery('