/* This file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. */ (function() { 'use strict'; Sao.Session = Sao.class_(Object, { init: function(database, login) { this.user_id = null; this.session = null; this.database = database; this.login = login; this.context = {}; if (!Sao.Session.current_session) { Sao.Session.current_session = this; } }, do_login: function(login, password) { var dfd = jQuery.Deferred(); var args = { 'method': 'common.db.login', 'params': [login, password] }; var ajax_prm = jQuery.ajax({ 'contentType': 'application/json', 'data': JSON.stringify(args), 'dataType': 'json', 'url': '/' + this.database, 'type': 'post' }); var ajax_success = function(data) { if (data === null) { Sao.common.warning.run('', Sao.i18n.gettext('Unable to reach the server.')); dfd.reject(); } else if (data.error) { Sao.common.error.run(data.error[0], data.error[1]); dfd.reject(); } else { if (!data.result) { this.user_id = null; this.session = null; dfd.reject(); } else { this.user_id = data.result[0]; this.session = data.result[1]; dfd.resolve(); } } }; ajax_prm.success(ajax_success.bind(this)); ajax_prm.error(dfd.reject); return dfd.promise(); }, do_logout: function() { if (!(this.user_id && this.session)) { return jQuery.when(); } var args = { 'method': 'common.db.logout', 'params': [] }; var prm = Sao.rpc(args, this); this.database = null; this.login = null; this.user_id = null; this.session = null; return prm; }, reload_context: function() { var args = { 'method': 'model.res.user.get_preferences', 'params': [true, {}] }; // Call with custom session to not send context var session = jQuery.extend({}, this); session.context = {}; var prm = Sao.rpc(args, session); return prm.then(function(context) { this.context = context; }.bind(this)); } }); Sao.Session.login_dialog = function() { var dialog = new Sao.Dialog(Sao.i18n.gettext('Login'), 'lg'); dialog.database_select = jQuery('', { 'class': 'form-control', 'id': 'login-login', 'placeholder': Sao.i18n.gettext('Login') }); dialog.password_input = jQuery('', { 'class': 'form-control', 'type': 'password', 'id': 'login-password', 'placeholder': Sao.i18n.gettext('Password') }); dialog.body.append(jQuery('
', { 'class': 'form-group' }).append(jQuery('