mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-22 11:58:29 +00:00
feat: 添加短信服务和用户消息通知
This commit is contained in:
@@ -7,3 +7,4 @@ from .feishu import *
|
||||
from .wecom import *
|
||||
from .sso import *
|
||||
from .base import *
|
||||
from .sms import *
|
||||
|
51
apps/settings/serializers/auth/sms.py
Normal file
51
apps/settings/serializers/auth/sms.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from rest_framework import serializers
|
||||
|
||||
from common.message.backends.sms import BACKENDS
|
||||
|
||||
__all__ = ['AlibabaSMSSettingSerializer', 'TencentSMSSettingSerializer']
|
||||
|
||||
|
||||
class BaseSMSSettingSerializer(serializers.Serializer):
|
||||
AUTH_SMS = serializers.BooleanField(default=False, label=_('Enable SMS'))
|
||||
SMS_TEST_PHONE = serializers.CharField(max_length=256, required=False, label=_('Test phone'))
|
||||
|
||||
def to_representation(self, instance):
|
||||
data = super().to_representation(instance)
|
||||
data['SMS_BACKEND'] = self.fields['SMS_BACKEND'].default
|
||||
return data
|
||||
|
||||
|
||||
class AlibabaSMSSettingSerializer(BaseSMSSettingSerializer):
|
||||
SMS_BACKEND = serializers.ChoiceField(choices=BACKENDS.choices, default=BACKENDS.ALIBABA)
|
||||
ALIBABA_ACCESS_KEY_ID = serializers.CharField(max_length=256, required=True, label='AccessKeyId')
|
||||
ALIBABA_ACCESS_KEY_SECRET = serializers.CharField(
|
||||
max_length=256, required=False, label='AccessKeySecret', write_only=True)
|
||||
ALIBABA_SMS_SIGN_AND_TEMPLATES = serializers.DictField(
|
||||
label=_('Signatures and Templates'), required=True, help_text=_('''
|
||||
Filling in JSON Data:
|
||||
{
|
||||
"verification_code": {
|
||||
"sign_name": "<Your signature name>",
|
||||
"template_code": "<Your template code>"
|
||||
}
|
||||
}
|
||||
''')
|
||||
)
|
||||
|
||||
|
||||
class TencentSMSSettingSerializer(BaseSMSSettingSerializer):
|
||||
SMS_BACKEND = serializers.ChoiceField(choices=BACKENDS.choices, default=BACKENDS.TENCENT)
|
||||
TENCENT_SECRET_ID = serializers.CharField(max_length=256, required=True, label='Secret id')
|
||||
TENCENT_SECRET_KEY = serializers.CharField(max_length=256, required=False, label='Secret key', write_only=True)
|
||||
TENCENT_SDKAPPID = serializers.CharField(max_length=256, required=True, label='SDK app id')
|
||||
TENCENT_SMS_SIGN_AND_TEMPLATES = serializers.DictField(
|
||||
label=_('Signatures and Templates'), required=True, help_text=_('''
|
||||
Filling in JSON Data:
|
||||
{
|
||||
"verification_code": {
|
||||
"sign_name": "<Your signature name>",
|
||||
"template_code": "<Your template code>"
|
||||
}
|
||||
}
|
||||
'''))
|
@@ -6,12 +6,14 @@ from .email import EmailSettingSerializer, EmailContentSettingSerializer
|
||||
from .auth import (
|
||||
LDAPSettingSerializer, OIDCSettingSerializer, KeycloakSettingSerializer,
|
||||
CASSettingSerializer, RadiusSettingSerializer, FeiShuSettingSerializer,
|
||||
WeComSettingSerializer, DingTalkSettingSerializer
|
||||
WeComSettingSerializer, DingTalkSettingSerializer, AlibabaSMSSettingSerializer,
|
||||
TencentSMSSettingSerializer,
|
||||
)
|
||||
from .terminal import TerminalSettingSerializer
|
||||
from .security import SecuritySettingSerializer
|
||||
from .cleaning import CleaningSerializer
|
||||
|
||||
|
||||
__all__ = [
|
||||
'SettingsSerializer',
|
||||
]
|
||||
@@ -32,7 +34,9 @@ class SettingsSerializer(
|
||||
KeycloakSettingSerializer,
|
||||
CASSettingSerializer,
|
||||
RadiusSettingSerializer,
|
||||
CleaningSerializer
|
||||
CleaningSerializer,
|
||||
AlibabaSMSSettingSerializer,
|
||||
TencentSMSSettingSerializer,
|
||||
):
|
||||
# encrypt_fields 现在使用 write_only 来判断了
|
||||
pass
|
||||
|
7
apps/settings/serializers/sms.py
Normal file
7
apps/settings/serializers/sms.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class SMSBackendSerializer(serializers.Serializer):
|
||||
name = serializers.CharField(max_length=256, required=True, label=_('Name'))
|
||||
label = serializers.CharField(max_length=256, required=True, label=_('Label'))
|
Reference in New Issue
Block a user