summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorOlivier Dony <odo@openerp.com>2011-12-13 17:15:54 +0100
committerOlivier Dony <odo@openerp.com>2011-12-13 17:15:54 +0100
commit9835cebe195bc9ca9bffd5d4e2cba680d366b82b (patch)
tree441881a902a8f01fea04a97d76f6bbc3b35e6669 /addons
parent020c0927e43b55f897fb4a990db4db051c8a55d3 (diff)
parent5ea774f883f1ac71ca98906a5ec5811b7e55e132 (diff)
[MERGE] Use the new authenticate() API instead of login()
Using the new authenticate() API instead allows to pass a user-agent environment along with the credentials. The main use for the UA environment at this point is to pass the base URL used to login, so that the server may initialize its "web.base.url" global config parameters bzr revid: odo@openerp.com-20111213161554-jbtrp94aatcnibne
Diffstat (limited to 'addons')
-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){