diff --git a/addons/auth_oauth/controllers/main.py b/addons/auth_oauth/controllers/main.py index 415d75685af..0e4d5572c52 100644 --- a/addons/auth_oauth/controllers/main.py +++ b/addons/auth_oauth/controllers/main.py @@ -47,10 +47,7 @@ class OAuthLogin(openerp.addons.web.controllers.main.Home): providers = [] for provider in providers: return_url = request.httprequest.url_root + 'auth_oauth/signin' - state = dict( - d=request.session.db, - p=provider['id'] - ) + state = self.get_state(provider) params = dict( debug=request.debug, response_type='token', @@ -63,10 +60,17 @@ class OAuthLogin(openerp.addons.web.controllers.main.Home): return providers + def get_state(self, provider): + return dict( + d=request.session.db, + p=provider['id'] + ) + @http.route() def web_login(self, *args, **kw): # TODO: ensure_db() request.disable_db = False + providers = self.list_providers() response = super(OAuthLogin, self).web_login(*args, **kw) if isinstance(response, LazyResponse): @@ -80,15 +84,10 @@ class OAuthLogin(openerp.addons.web.controllers.main.Home): else: error = None response.params['values'].update( - providers=self.list_providers(), + providers=providers, error=error, ) - # TODO: code in old js controller that should be converted in auth_oauth_signup - # if (this.oauth_providers.length === 1 && params.type === 'signup') { - # this.do_oauth_sign_in(this.oauth_providers[0]); - # } - return response class OAuthController(http.Controller): diff --git a/addons/auth_oauth_signup/__init__.py b/addons/auth_oauth_signup/__init__.py index bc40c87d118..7c73af367bd 100644 --- a/addons/auth_oauth_signup/__init__.py +++ b/addons/auth_oauth_signup/__init__.py @@ -20,3 +20,4 @@ ############################################################################## import res_users +import controllers diff --git a/addons/auth_oauth_signup/__openerp__.py b/addons/auth_oauth_signup/__openerp__.py index 1e5767065a4..8fc93f6c920 100644 --- a/addons/auth_oauth_signup/__openerp__.py +++ b/addons/auth_oauth_signup/__openerp__.py @@ -31,7 +31,7 @@ Allow users to sign up through OAuth2 Provider. 'website': 'http://www.openerp.com', 'depends': ['auth_oauth', 'auth_signup'], 'data': [], - 'js': ['static/src/js/auth_oauth_signup.js'], + 'js': [], 'css': [], 'qweb': [], 'installable': True, diff --git a/addons/auth_oauth_signup/controllers/__init__.py b/addons/auth_oauth_signup/controllers/__init__.py new file mode 100644 index 00000000000..e11f9ba81bb --- /dev/null +++ b/addons/auth_oauth_signup/controllers/__init__.py @@ -0,0 +1,3 @@ +import main + +# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/auth_oauth_signup/controllers/main.py b/addons/auth_oauth_signup/controllers/main.py new file mode 100644 index 00000000000..0b8ab22cdaa --- /dev/null +++ b/addons/auth_oauth_signup/controllers/main.py @@ -0,0 +1,20 @@ +import openerp +import werkzeug + +from openerp.http import request + +class OAuthSignupLogin(openerp.addons.web.controllers.main.Home): + def list_providers(self): + providers = super(OAuthSignupLogin, self).list_providers() + if len(providers) == 1 and request.params.get('mode') == 'signup': + werkzeug.exceptions.abort(werkzeug.utils.redirect(providers[0]['auth_link'], 303)) + return providers + + def get_state(self, provider): + state = super(OAuthSignupLogin, self).get_state(provider) + token = request.params.get('token') + if token: + state['t'] = token + return state + +# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/auth_oauth_signup/static/src/js/auth_oauth_signup.js b/addons/auth_oauth_signup/static/src/js/auth_oauth_signup.js deleted file mode 100644 index 926fb607358..00000000000 --- a/addons/auth_oauth_signup/static/src/js/auth_oauth_signup.js +++ /dev/null @@ -1,16 +0,0 @@ -openerp.auth_oauth_signup = function(instance) { - - /* TODO: make this a server side controller - // override Login._oauth_state to add the signup token in the state - instance.web.Login.include({ - _oauth_state: function(provider) { - var state = this._super.apply(this, arguments); - if (this.params.token) { - state.t = this.params.token; - } - return state; - }, - }); - */ - -};