summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/web/common/openerplib/main.py3
-rw-r--r--addons/web/common/session.py5
-rw-r--r--addons/web/controllers/main.py12
-rw-r--r--addons/web/static/src/js/chrome.js2
-rw-r--r--addons/web/static/src/js/core.js9
-rw-r--r--addons/web_mobile/static/openerp/dynamics/testConnect.js2
-rw-r--r--addons/web_mobile/static/src/js/chrome_mobile.js2
-rw-r--r--addons/web_rpc/static/src/example.html2
8 files changed, 24 insertions, 13 deletions
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){