mirror of
https://github.com/YFGaia/dify-plus.git
synced 2026-06-12 18:11:42 +08:00
fix: 钉钉和快捷登录兼容
This commit is contained in:
@@ -3,6 +3,11 @@ from flask_restx import Resource
|
||||
|
||||
from controllers.console.app.error_extend import DingTalkNotExist
|
||||
from controllers.console.wraps import setup_required
|
||||
from libs.token import (
|
||||
set_access_token_to_cookie,
|
||||
set_csrf_token_to_cookie,
|
||||
set_refresh_token_to_cookie,
|
||||
)
|
||||
from services.ding_talk_extend import DingTalkService
|
||||
|
||||
from .. import api
|
||||
@@ -17,10 +22,17 @@ class DingTalk(Resource):
|
||||
code = request.args.get("code", "")
|
||||
if not (0 < len(code) < 500):
|
||||
raise DingTalkNotExist
|
||||
token, err = DingTalkService.get_user_info(code)
|
||||
token_pair, redirect_url, err = DingTalkService.get_user_info(code)
|
||||
if len(err) > 0:
|
||||
raise DingTalkNotExist(err)
|
||||
return redirect(token)
|
||||
if token_pair is None:
|
||||
raise DingTalkNotExist("Failed to get token pair")
|
||||
|
||||
response = redirect(redirect_url)
|
||||
set_access_token_to_cookie(request, response, token_pair.access_token)
|
||||
set_refresh_token_to_cookie(request, response, token_pair.refresh_token)
|
||||
set_csrf_token_to_cookie(request, response, token_pair.csrf_token)
|
||||
return response
|
||||
|
||||
|
||||
class DingTalkThirdParty(Resource):
|
||||
@@ -32,10 +44,17 @@ class DingTalkThirdParty(Resource):
|
||||
code = request.args.get("authCode", "")
|
||||
if not (0 < len(code) < 500):
|
||||
raise DingTalkNotExist
|
||||
token, err = DingTalkService.user_third_party(code)
|
||||
token_pair, redirect_url, err = DingTalkService.user_third_party(code)
|
||||
if len(err) > 0:
|
||||
raise DingTalkNotExist(err)
|
||||
return redirect(token)
|
||||
if token_pair is None:
|
||||
raise DingTalkNotExist("Failed to get token pair")
|
||||
|
||||
response = redirect(redirect_url)
|
||||
set_access_token_to_cookie(request, response, token_pair.access_token)
|
||||
set_refresh_token_to_cookie(request, response, token_pair.refresh_token)
|
||||
set_csrf_token_to_cookie(request, response, token_pair.csrf_token)
|
||||
return response
|
||||
|
||||
|
||||
api.add_resource(DingTalk, "/ding-talk/login")
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
from typing import Optional # Extend: OAuto third-party login
|
||||
|
||||
import httpx
|
||||
from flask import current_app, redirect, request
|
||||
@@ -13,7 +14,7 @@ from events.tenant_event import tenant_was_created
|
||||
from extensions.ext_database import db
|
||||
from libs.datetime_utils import naive_utc_now
|
||||
from libs.helper import extract_remote_ip
|
||||
from libs.oauth import GitHubOAuth, GoogleOAuth, OAuthUserInfo
|
||||
from libs.oauth import GitHubOAuth, GoogleOAuth, OaOAuth, OAuthUserInfo # Extend: OAuto third-party login
|
||||
from libs.token import (
|
||||
set_access_token_to_cookie,
|
||||
set_csrf_token_to_cookie,
|
||||
|
||||
Reference in New Issue
Block a user