mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-02 07:55:16 +00:00
feat: 添加 飞书 (#6602)
* feat: 添加 飞书 Co-authored-by: xinwen <coderWen@126.com> Co-authored-by: wenyann <64353056+wenyann@users.noreply.github.com>
This commit is contained in:
@@ -2,3 +2,4 @@ from .common import *
|
||||
from .ldap import *
|
||||
from .wecom import *
|
||||
from .dingtalk import *
|
||||
from .feishu import *
|
||||
|
@@ -130,6 +130,7 @@ class PublicSettingApi(generics.RetrieveAPIView):
|
||||
},
|
||||
"AUTH_WECOM": settings.AUTH_WECOM,
|
||||
"AUTH_DINGTALK": settings.AUTH_DINGTALK,
|
||||
"AUTH_FEISHU": settings.AUTH_FEISHU,
|
||||
'SECURITY_WATERMARK_ENABLED': settings.SECURITY_WATERMARK_ENABLED
|
||||
}
|
||||
}
|
||||
@@ -148,6 +149,7 @@ class SettingsApi(generics.RetrieveUpdateAPIView):
|
||||
'email_content': serializers.EmailContentSettingSerializer,
|
||||
'wecom': serializers.WeComSettingSerializer,
|
||||
'dingtalk': serializers.DingTalkSettingSerializer,
|
||||
'feishu': serializers.FeiShuSettingSerializer,
|
||||
}
|
||||
|
||||
def get_serializer_class(self):
|
||||
|
41
apps/settings/api/feishu.py
Normal file
41
apps/settings/api/feishu.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from rest_framework.views import Response
|
||||
from rest_framework.generics import GenericAPIView
|
||||
from rest_framework.exceptions import APIException
|
||||
from rest_framework import status
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from settings.models import Setting
|
||||
from common.permissions import IsSuperUser
|
||||
from common.message.backends.feishu import FeiShu
|
||||
|
||||
from .. import serializers
|
||||
|
||||
|
||||
class FeiShuTestingAPI(GenericAPIView):
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.FeiShuSettingSerializer
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
app_id = serializer.validated_data['FEISHU_APP_ID']
|
||||
app_secret = serializer.validated_data.get('FEISHU_APP_SECRET')
|
||||
|
||||
if not app_secret:
|
||||
secret = Setting.objects.filter(name='FEISHU_APP_SECRET').first()
|
||||
if secret:
|
||||
app_secret = secret.cleaned_value
|
||||
|
||||
app_secret = app_secret or ''
|
||||
|
||||
try:
|
||||
feishu = FeiShu(app_id=app_id, app_secret=app_secret)
|
||||
feishu.send_text(['test'], 'test')
|
||||
return Response(status=status.HTTP_200_OK, data={'msg': _('Test success')})
|
||||
except APIException as e:
|
||||
try:
|
||||
error = e.detail['errmsg']
|
||||
except:
|
||||
error = e.detail
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST, data={'error': error})
|
Reference in New Issue
Block a user