feat: 添加短信服务和用户消息通知

This commit is contained in:
xinwen
2021-08-24 14:20:54 +08:00
parent d49d1e1414
commit b1fceca8a6
57 changed files with 1442 additions and 296 deletions

View File

@@ -7,3 +7,4 @@ from .feishu import *
from .wecom import *
from .sso import *
from .base import *
from .sms import *

View 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>"
}
}
'''))

View File

@@ -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

View 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'))