[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
|
||||
|
||||
from openerp.modules.registry import RegistryManager
|
||||
from openerp.addons.web.controllers.main import login_and_redirect, set_cookie_and_redirect
|
||||
try:
|
||||
import openerp.addons.web.common.http as openerpweb
|
||||
except ImportError:
|
||||
|
@ -159,7 +160,7 @@ class OpenIDController(openerpweb.Controller):
|
|||
def process(self, req, **kw):
|
||||
session = getattr(req.session, 'openid_session', None)
|
||||
if not session:
|
||||
return werkzeug.utils.redirect('/')
|
||||
return set_cookie_and_redirect(req, '/')
|
||||
|
||||
oidconsumer = consumer.Consumer(session, self._store, consumer_class=GoogleAppsAwareConsumer)
|
||||
|
||||
|
@ -168,7 +169,6 @@ class OpenIDController(openerpweb.Controller):
|
|||
display_identifier = info.getDisplayIdentifier()
|
||||
|
||||
session['status'] = info.status
|
||||
user_id = None
|
||||
|
||||
if info.status == consumer.SUCCESS:
|
||||
dbname = session['dbname']
|
||||
|
@ -206,10 +206,9 @@ class OpenIDController(openerpweb.Controller):
|
|||
# TODO fill empty fields with the ones from sreg/ax
|
||||
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:
|
||||
session['message'] = info.setup_url
|
||||
|
@ -223,8 +222,7 @@ class OpenIDController(openerpweb.Controller):
|
|||
# information in a log.
|
||||
session['message'] = 'Verification failed.'
|
||||
|
||||
fragment = '#loginerror' if not user_id else ''
|
||||
return werkzeug.utils.redirect('/' + fragment)
|
||||
return set_cookie_and_redirect(req, '/#action=login&loginerror=1')
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
def status(self, req):
|
||||
|
|
|
@ -8,7 +8,7 @@ instance.web.Login = instance.web.Login.extend({
|
|||
this._super.apply(this, arguments);
|
||||
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_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 fragment = jQuery.deparam.fragment();
|
||||
console.log(fragment);
|
||||
if (fragment.loginerror !== undefined) {
|
||||
if (this.params.loginerror !== undefined) {
|
||||
this.rpc('/auth_openid/login/status', {}, function(result) {
|
||||
if (_.contains(['success', 'failure'], result.status) && 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) {
|
||||
//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() {
|
||||
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