[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
This commit is contained in:
commit
9835cebe19
|
@ -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")
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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){
|
||||
|
|
Loading…
Reference in New Issue