mirror of
https://github.com/YFGaia/dify-plus.git
synced 2026-06-12 18:11:42 +08:00
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
from flask import redirect, request
|
|
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
|
|
|
|
|
|
class DingTalk(Resource):
|
|
@setup_required
|
|
def get(self):
|
|
"""
|
|
DingTalk login
|
|
"""
|
|
code = request.args.get("code", "")
|
|
if not (0 < len(code) < 500):
|
|
raise DingTalkNotExist
|
|
token_pair, redirect_url, err = DingTalkService.get_user_info(code)
|
|
if len(err) > 0:
|
|
raise DingTalkNotExist(err)
|
|
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):
|
|
@setup_required
|
|
def get(self):
|
|
"""
|
|
DingTalk login
|
|
"""
|
|
code = request.args.get("authCode", "")
|
|
if not (0 < len(code) < 500):
|
|
raise DingTalkNotExist
|
|
token_pair, redirect_url, err = DingTalkService.user_third_party(code)
|
|
if len(err) > 0:
|
|
raise DingTalkNotExist(err)
|
|
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")
|
|
api.add_resource(DingTalkThirdParty, "/ding-talk/third-party/login")
|