[FIX] auth_oauth: missing res_users.py diff from rev 33bfec2174
Most probably due to github migration + fix: directly redirect to login redirect paramas, instead of redirecting on the complete web/login + redirect url
This commit is contained in:
parent
e035cc9105
commit
0a537dae91
|
@ -68,10 +68,13 @@ class OAuthLogin(Home):
|
|||
return providers
|
||||
|
||||
def get_state(self, provider):
|
||||
redirect = request.params.get('redirect', 'web')
|
||||
if not redirect.startswith(('//', 'http://', 'https://')):
|
||||
redirect = '%s%s' % (request.httprequest.url_root, redirect)
|
||||
state = dict(
|
||||
d=request.session.db,
|
||||
p=provider['id'],
|
||||
r=request.httprequest.full_path
|
||||
r=redirect,
|
||||
)
|
||||
token = request.params.get('token')
|
||||
if token:
|
||||
|
@ -142,8 +145,7 @@ class OAuthController(http.Controller):
|
|||
menu = state.get('m')
|
||||
redirect = state.get('r')
|
||||
url = '/web'
|
||||
if redirect and not redirect.startswith('/auth_oauth/signin') and \
|
||||
(not redirect.startswith('/web/login') or 'redirect' in urlparse.urlsplit(redirect).query):
|
||||
if redirect:
|
||||
url = redirect
|
||||
elif action:
|
||||
url = '/web#action=%s' % action
|
||||
|
|
|
@ -6,6 +6,7 @@ import urllib2
|
|||
import simplejson
|
||||
|
||||
import openerp
|
||||
from openerp.addons.auth_signup.res_users import SignupError
|
||||
from openerp.osv import osv, fields
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
|
@ -55,14 +56,37 @@ class res_users(osv.Model):
|
|||
|
||||
This method can be overridden to add alternative signin methods.
|
||||
"""
|
||||
oauth_uid = validation['user_id']
|
||||
user_ids = self.search(cr, uid, [("oauth_uid", "=", oauth_uid), ('oauth_provider_id', '=', provider)])
|
||||
if not user_ids:
|
||||
raise openerp.exceptions.AccessDenied()
|
||||
assert len(user_ids) == 1
|
||||
user = self.browse(cr, uid, user_ids[0], context=context)
|
||||
user.write({'oauth_access_token': params['access_token']})
|
||||
return user.login
|
||||
try:
|
||||
oauth_uid = validation['user_id']
|
||||
user_ids = self.search(cr, uid, [("oauth_uid", "=", oauth_uid), ('oauth_provider_id', '=', provider)])
|
||||
if not user_ids:
|
||||
raise openerp.exceptions.AccessDenied()
|
||||
assert len(user_ids) == 1
|
||||
user = self.browse(cr, uid, user_ids[0], context=context)
|
||||
user.write({'oauth_access_token': params['access_token']})
|
||||
return user.login
|
||||
except openerp.exceptions.AccessDenied, access_denied_exception:
|
||||
if context and context.get('no_user_creation'):
|
||||
return None
|
||||
state = simplejson.loads(params['state'])
|
||||
token = state.get('t')
|
||||
oauth_uid = validation['user_id']
|
||||
email = validation.get('email', 'provider_%s_user_%s' % (provider, oauth_uid))
|
||||
name = validation.get('name', email)
|
||||
values = {
|
||||
'name': name,
|
||||
'login': email,
|
||||
'email': email,
|
||||
'oauth_provider_id': provider,
|
||||
'oauth_uid': oauth_uid,
|
||||
'oauth_access_token': params['access_token'],
|
||||
'active': True,
|
||||
}
|
||||
try:
|
||||
_, login, _ = self.signup(cr, uid, values, token, context=context)
|
||||
return login
|
||||
except SignupError:
|
||||
raise access_denied_exception
|
||||
|
||||
def auth_oauth(self, cr, uid, provider, params, context=None):
|
||||
# Advice by Google (to avoid Confused Deputy Problem)
|
||||
|
|
Loading…
Reference in New Issue