diff --git a/app_saas/data/auth_oauth_data.xml b/app_saas/data/auth_oauth_data.xml
index 851af0c7..47e82663 100644
--- a/app_saas/data/auth_oauth_data.xml
+++ b/app_saas/data/auth_oauth_data.xml
@@ -9,6 +9,7 @@
odoo,profile
https://www.odooapp.cn/oauth/profile
+
fa fa-2x fa-fw fa-sign-in text-primary
diff --git a/app_saas/models/res_users.py b/app_saas/models/res_users.py
index b1a05d3d..66099fd7 100644
--- a/app_saas/models/res_users.py
+++ b/app_saas/models/res_users.py
@@ -35,7 +35,7 @@ class ResUsers(models.Model):
@api.model
def auth_oauth(self, provider, params):
- # 这里原生是已取 token,实际用 code 时要另取token
+ # 这里原生是没处理code模式,此处将增加使用code取token,不在 controller 中处理
code = params.get('code', False)
access_token = params.get('access_token')
oauth_provider = self.env['auth.oauth.provider'].sudo().browse(provider)
@@ -51,9 +51,13 @@ class ResUsers(models.Model):
params.update({
'client_secret': oauth_provider.client_secret or '',
})
- response = requests.get(oauth_provider.code_endpoint, params=params, timeout=20)
+ response = requests.get(oauth_provider.code_endpoint, params=params, timeout=30)
if response.ok:
ret = response.json()
+ # todo: 客户机首次连接时,取到的 server 端 key 写入 provider 的 client_secret
+ if ret.get('push_client_secret') and hasattr(oauth_provider, 'client_secret'):
+ oauth_provider.write({'client_secret': ret.get('push_client_secret')})
+ self._cr.commit()
kw = {**ret, **params}
kw.pop('code', False)
self = self.with_context(auth_extra=kw)
@@ -87,10 +91,10 @@ class ResUsers(models.Model):
oauth_provider_id = values.get('oauth_provider_id')
if oauth_provider_id:
provider = request.env['auth.oauth.provider'].sudo().browse(int(oauth_provider_id))
- if provider and provider.scope.find('odoo') >= 0:
- template_user = self.sudo().env.ref('base.default_user', False)
- if provider and hasattr(provider, 'user_template_id'):
- template_user = provider.user_template_id
+ if provider:
+ template_user = provider.user_template_id
+ if not template_user and provider.scope.find('odoo') >= 0:
+ template_user = self.sudo().env.ref('base.default_user', False)
if not template_user:
template_user_id = literal_eval(self.env['ir.config_parameter'].sudo().get_param('base.template_portal_user_id', 'False'))
template_user = self.sudo().browse(template_user_id)