免登录
This commit is contained in:
@@ -40,11 +40,11 @@ class Home(http.Controller):
|
||||
"""
|
||||
provider = request.env.ref('yuthon_wechat.wechat_corp_web_auth_oauth_provider')
|
||||
(db, login, oauth_code) = request.env['res.users'].sudo().auth_oauth_wechat(provider.sudo(), {'code': code})
|
||||
|
||||
|
||||
# 如果没有state参数,返回原始值,保持与原本方法行为一致
|
||||
if not state:
|
||||
return (db, login, oauth_code)
|
||||
|
||||
|
||||
# 如果有state参数,执行登录并重定向到目标URL
|
||||
try:
|
||||
# 查找用户并创建session
|
||||
@@ -52,7 +52,7 @@ class Home(http.Controller):
|
||||
if not user:
|
||||
_logger.error(f"OAuth登录后未找到用户: {login}")
|
||||
return http.request.redirect('/web/login?error=user_not_found', 302)
|
||||
|
||||
|
||||
# 创建session
|
||||
dbname = request.env.cr.dbname
|
||||
try:
|
||||
@@ -63,9 +63,9 @@ class Home(http.Controller):
|
||||
request.session.login = user.login
|
||||
request.session.db = dbname
|
||||
uid = user.id
|
||||
|
||||
|
||||
_logger.info(f"企业微信OAuth登录成功: 用户 {user.login} (ID: {user.id})")
|
||||
|
||||
|
||||
# 解码并重定向到目标URL
|
||||
try:
|
||||
from urllib.parse import unquote
|
||||
@@ -79,7 +79,7 @@ class Home(http.Controller):
|
||||
except Exception as e:
|
||||
_logger.error(f"解析state参数失败: {str(e)}")
|
||||
return http.request.redirect('/web', 302)
|
||||
|
||||
|
||||
except AccessDenied as e:
|
||||
_logger.error(f"企业微信OAuth登录失败: {str(e)}")
|
||||
return http.request.redirect('/web/login?error=access_denied', 302)
|
||||
@@ -172,8 +172,6 @@ class Home(http.Controller):
|
||||
@http.route('/phone/wechat/login', type='http', auth="none", csrf=False, cors='*', methods=['POST'])
|
||||
def phone_wechat_login(self, **kw):
|
||||
"""手机端企业微信OAuth登录接口"""
|
||||
# 阻止此请求修改已有的 session,避免挤掉 PC 端同用户的登录状态
|
||||
request.session.should_save = False
|
||||
try:
|
||||
code = kw.get('code')
|
||||
if not code:
|
||||
@@ -211,16 +209,6 @@ class Home(http.Controller):
|
||||
}),
|
||||
headers=[('Content-Type', 'application/json')]
|
||||
)
|
||||
except WeChatOAuthException as e:
|
||||
_logger.error(e)
|
||||
return request.make_response(
|
||||
json.dumps({
|
||||
'code': e.errcode,
|
||||
'message': f'企业微信认证失败: {str(e.errmsg)}',
|
||||
'data': None
|
||||
}),
|
||||
headers=[('Content-Type', 'application/json')]
|
||||
)
|
||||
except Exception as e:
|
||||
_logger.error(f"企业微信OAuth认证异常: {str(e)}", exc_info=True)
|
||||
return request.make_response(
|
||||
@@ -331,8 +319,6 @@ class Home(http.Controller):
|
||||
status=302,
|
||||
headers=[('Location', redirect_url)]
|
||||
)
|
||||
# 阻止 Odoo 覆盖现有 session cookie,避免后台 session 过期
|
||||
request.session.should_save = False
|
||||
|
||||
return response
|
||||
|
||||
@@ -341,7 +327,6 @@ class Home(http.Controller):
|
||||
frontend_base_url = 'https://phone.thtzjt.com'
|
||||
redirect_url = f"{frontend_base_url}/phone/Login"
|
||||
|
||||
request.session.should_save = False
|
||||
return WerkzeugResponse(
|
||||
'',
|
||||
status=302,
|
||||
|
||||
@@ -10,7 +10,7 @@ from odoo import api, fields, models
|
||||
from odoo.tools.misc import ustr
|
||||
from odoo.exceptions import AccessDenied
|
||||
from odoo.http import request
|
||||
# from odoo.addons.auth_signup.models.res_users import SignupError
|
||||
from odoo.addons.auth_signup.models.res_users import SignupError
|
||||
from odoo.addons.auth_oauth.controllers.main import OAuthLogin
|
||||
import logging
|
||||
|
||||
|
||||
Reference in New Issue
Block a user