diff --git a/addons/web/common/openerplib/main.py b/addons/web/common/openerplib/main.py index 773ea020d52..0f0be088e54 100644 --- a/addons/web/common/openerplib/main.py +++ b/addons/web/common/openerplib/main.py @@ -363,7 +363,8 @@ class Connection(object): if not self.database or not self.login or self.password is None: raise AuthenticationError("Credentials not provided") - + + # TODO use authenticate instead of login self.user_id = self.get_service("common").login(self.database, self.login, self.password) if not self.user_id: raise AuthenticationError("Authentication failure") diff --git a/addons/web/common/session.py b/addons/web/common/session.py index e8027db8ea4..1fa76e30b1d 100644 --- a/addons/web/common/session.py +++ b/addons/web/common/session.py @@ -58,8 +58,9 @@ class OpenERPSession(object): self._login = login self._password = password - def login(self, db, login, password): - uid = self.proxy('common').login(db, login, password) + def authenticate(self, db, login, password, env): + # TODO use the openerplib API once it exposes authenticate() + uid = self.proxy('common').authenticate(db, login, password, env) self.bind(db, uid, login, password) if uid: self.get_context() diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 397a6a0d302..81061ba5477 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -337,8 +337,16 @@ class Session(openerpweb.Controller): _cp_path = "/web/session" @openerpweb.jsonrequest - def login(self, req, db, login, password): - req.session.login(db, login, password) + def authenticate(self, req, db, login, password, base_location=None): + wsgienv = req.httprequest.environ + release = web.common.release + env = dict( + base_location=base_location, + HTTP_HOST=wsgienv['HTTP_HOST'], + REMOTE_ADDR=wsgienv['REMOTE_ADDR'], + user_agent="%s / %s" % (release.name, release.version), + ) + req.session.authenticate(db, login, password, env) ctx = req.session.get_context() if req.session._uid else {} return { diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 87b19b98950..f737d8eb92a 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -602,7 +602,7 @@ openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ */ do_login: function (db, login, password) { var self = this; - this.session.session_login(db, login, password, function() { + this.session.session_authenticate(db, login, password, function() { if(self.session.session_is_valid()) { if (self.has_local_storage) { if(self.remember_credentials) { diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 95d1043c3ca..d3734d29278 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -485,10 +485,11 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. session_is_valid: function() { return this.uid; }, - session_login: function(db, login, password, success_callback) { + session_authenticate: function(db, login, password, success_callback) { var self = this; - var params = { db: db, login: login, password: password }; - return this.rpc("/web/session/login", params, function(result) { + var base_location = document.location.protocol + '//' + document.location.host; + var params = { db: db, login: login, password: password, base_location: base_location }; + return this.rpc("/web/session/authenticate", params, function(result) { _.extend(self, { session_id: result.session_id, uid: result.uid, @@ -501,7 +502,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. return true; }).then(success_callback); }, - login: function() { this.session_login.apply(this, arguments); }, + login: function() { this.session_authenticate.apply(this, arguments); }, /** * Reloads uid and session_id from local storage, if they exist */ diff --git a/addons/web_mobile/static/openerp/dynamics/testConnect.js b/addons/web_mobile/static/openerp/dynamics/testConnect.js index 3023fcc22b0..b64ed11317c 100644 --- a/addons/web_mobile/static/openerp/dynamics/testConnect.js +++ b/addons/web_mobile/static/openerp/dynamics/testConnect.js @@ -3,7 +3,7 @@ var ip = ''; var USER = ''; var PWD = ''; SESSION = new oe.base.Session('DEBUG'); -SESSION.session_login(db,USER,PWD, initLogin); +SESSION.login(db,USER,PWD, initLogin); function initLogin() { // Le premier argument de la fonction -> référence à une fonction python. diff --git a/addons/web_mobile/static/src/js/chrome_mobile.js b/addons/web_mobile/static/src/js/chrome_mobile.js index f86e0fec5f9..ff75b26ef66 100644 --- a/addons/web_mobile/static/src/js/chrome_mobile.js +++ b/addons/web_mobile/static/src/js/chrome_mobile.js @@ -64,7 +64,7 @@ openerp.web_mobile.Login = openerp.web.Widget.extend({ var password = $e.find("div input[name=password]").val(); //$e.hide(); // Should hide then call callback - this.session.session_login(db, login, password, function() { + this.session.login(db, login, password, function() { if(self.session.session_is_valid()) { if (self.has_local_storage) { if(self.remember_creditentials) { diff --git a/addons/web_rpc/static/src/example.html b/addons/web_rpc/static/src/example.html index 724de9d2885..fb5d12f73e3 100644 --- a/addons/web_rpc/static/src/example.html +++ b/addons/web_rpc/static/src/example.html @@ -29,7 +29,7 @@ c._modules_loaded = true; // Hack to prevent loading of additional modules var s = new c.base.Session(); // setup a Session - s.session_login("web-trunk", "admin", "admin", function() { + s.login("web-trunk", "admin", "admin", function() { var ds = new c.base.DataSetSearch(s, "ir.model"); // DataSetSearch used to search, read ds.read_slice(['name','model'], {}, function(users){