[FIX] auth_openid: use set_cookie_and_redirect + handle errors correctly
bzr revid: chs@openerp.com-20120814104052-tw5zgqu5nb12zj5c
This commit is contained in:
parent
6a33cfa71a
commit
b1e5c9e1ae
|
@ -28,6 +28,7 @@ import werkzeug.urls
|
||||||
import werkzeug.exceptions
|
import werkzeug.exceptions
|
||||||
|
|
||||||
from openerp.modules.registry import RegistryManager
|
from openerp.modules.registry import RegistryManager
|
||||||
|
from openerp.addons.web.controllers.main import login_and_redirect, set_cookie_and_redirect
|
||||||
try:
|
try:
|
||||||
import openerp.addons.web.common.http as openerpweb
|
import openerp.addons.web.common.http as openerpweb
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -159,7 +160,7 @@ class OpenIDController(openerpweb.Controller):
|
||||||
def process(self, req, **kw):
|
def process(self, req, **kw):
|
||||||
session = getattr(req.session, 'openid_session', None)
|
session = getattr(req.session, 'openid_session', None)
|
||||||
if not session:
|
if not session:
|
||||||
return werkzeug.utils.redirect('/')
|
return set_cookie_and_redirect(req, '/')
|
||||||
|
|
||||||
oidconsumer = consumer.Consumer(session, self._store, consumer_class=GoogleAppsAwareConsumer)
|
oidconsumer = consumer.Consumer(session, self._store, consumer_class=GoogleAppsAwareConsumer)
|
||||||
|
|
||||||
|
@ -168,7 +169,6 @@ class OpenIDController(openerpweb.Controller):
|
||||||
display_identifier = info.getDisplayIdentifier()
|
display_identifier = info.getDisplayIdentifier()
|
||||||
|
|
||||||
session['status'] = info.status
|
session['status'] = info.status
|
||||||
user_id = None
|
|
||||||
|
|
||||||
if info.status == consumer.SUCCESS:
|
if info.status == consumer.SUCCESS:
|
||||||
dbname = session['dbname']
|
dbname = session['dbname']
|
||||||
|
@ -206,10 +206,9 @@ class OpenIDController(openerpweb.Controller):
|
||||||
# TODO fill empty fields with the ones from sreg/ax
|
# TODO fill empty fields with the ones from sreg/ax
|
||||||
cr.commit()
|
cr.commit()
|
||||||
|
|
||||||
req.session.authenticate(dbname, login, key, {})
|
return login_and_redirect(req, dbname, login, key)
|
||||||
|
|
||||||
if not user_id:
|
session['message'] = 'This OpenID identifier is not associated to any active users'
|
||||||
session['message'] = 'This OpenID identifier is not associated to any active users'
|
|
||||||
|
|
||||||
elif info.status == consumer.SETUP_NEEDED:
|
elif info.status == consumer.SETUP_NEEDED:
|
||||||
session['message'] = info.setup_url
|
session['message'] = info.setup_url
|
||||||
|
@ -223,8 +222,7 @@ class OpenIDController(openerpweb.Controller):
|
||||||
# information in a log.
|
# information in a log.
|
||||||
session['message'] = 'Verification failed.'
|
session['message'] = 'Verification failed.'
|
||||||
|
|
||||||
fragment = '#loginerror' if not user_id else ''
|
return set_cookie_and_redirect(req, '/#action=login&loginerror=1')
|
||||||
return werkzeug.utils.redirect('/' + fragment)
|
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerpweb.jsonrequest
|
||||||
def status(self, req):
|
def status(self, req):
|
||||||
|
|
|
@ -8,7 +8,7 @@ instance.web.Login = instance.web.Login.extend({
|
||||||
this._super.apply(this, arguments);
|
this._super.apply(this, arguments);
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this._default_error_message = this.$element.find('.login_error_message').text();
|
this._default_error_message = this.$element.find('.oe_login_error_message').text();
|
||||||
|
|
||||||
this.$openid_selected_button = $();
|
this.$openid_selected_button = $();
|
||||||
this.$openid_selected_input = $();
|
this.$openid_selected_input = $();
|
||||||
|
@ -40,8 +40,7 @@ instance.web.Login = instance.web.Login.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this._check_fragment();
|
this._check_error();
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,11 +66,9 @@ instance.web.Login = instance.web.Login.extend({
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_check_fragment: function() {
|
_check_error: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
var fragment = jQuery.deparam.fragment();
|
if (this.params.loginerror !== undefined) {
|
||||||
console.log(fragment);
|
|
||||||
if (fragment.loginerror !== undefined) {
|
|
||||||
this.rpc('/auth_openid/login/status', {}, function(result) {
|
this.rpc('/auth_openid/login/status', {}, function(result) {
|
||||||
if (_.contains(['success', 'failure'], result.status) && result.message) {
|
if (_.contains(['success', 'failure'], result.status) && result.message) {
|
||||||
self.do_warn('Invalid OpenID Login', result.message);
|
self.do_warn('Invalid OpenID Login', result.message);
|
||||||
|
@ -132,11 +129,12 @@ instance.web.Login = instance.web.Login.extend({
|
||||||
|
|
||||||
do_warn: function(title, msg) {
|
do_warn: function(title, msg) {
|
||||||
//console.warn(title, msg);
|
//console.warn(title, msg);
|
||||||
this.$element.find('.login_error_message').text(msg).show();
|
this.$element.find('.oe_login_error_message').text(msg).show();
|
||||||
|
this._super(title, msg);
|
||||||
},
|
},
|
||||||
|
|
||||||
reset_error_message: function() {
|
reset_error_message: function() {
|
||||||
this.$element.find('.login_error_message').text(this._default_error_message);
|
this.$element.find('.oe_login_error_message').text(this._default_error_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue