33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
|
import simplejson
|
||
|
import urllib
|
||
|
import openerp
|
||
|
from openerp import http
|
||
|
from openerp.http import request
|
||
|
import openerp.addons.web.controllers.main as webmain
|
||
|
from openerp.addons.web.http import SessionExpiredException
|
||
|
from werkzeug.exceptions import BadRequest
|
||
|
import werkzeug.utils
|
||
|
|
||
|
class google_auth(http.Controller):
|
||
|
|
||
|
@http.route('/google_account/authentication', type='http', auth="none")
|
||
|
def oauth2callback(self, **kw):
|
||
|
""" This route/function is called by Google when user Accept/Refuse the consent of Google """
|
||
|
|
||
|
state = simplejson.loads(kw['state'])
|
||
|
dbname = state.get('d')
|
||
|
service = state.get('s')
|
||
|
url_return = state.get('f')
|
||
|
|
||
|
registry = openerp.modules.registry.RegistryManager.get(dbname)
|
||
|
with registry.cursor() as cr:
|
||
|
if kw.get('code',False):
|
||
|
registry.get('google.%s' % service).set_all_tokens(cr,request.session.uid,kw['code'])
|
||
|
return werkzeug.utils.redirect(url_return)
|
||
|
elif kw.get('error'):
|
||
|
return werkzeug.utils.redirect("%s%s%s" % (url_return ,"?error=" , kw.get('error')))
|
||
|
else:
|
||
|
return werkzeug.utils.redirect("%s%s" % (url_return ,"?error=Unknown_error"))
|
||
|
|
||
|
|