mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-04-07 12:53:18 +00:00
* perf: 优化confirm接口 * perf: 修改 校验 * perf: 优化 confirm API 逻辑 * Delete django.po Co-authored-by: feng626 <1304903146@qq.com> Co-authored-by: ibuler <ibuler@qq.com> Co-authored-by: Jiangjie.Bai <bugatti_it@163.com> Co-authored-by: feng626 <57284900+feng626@users.noreply.github.com>
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from django.db.models import TextChoices
|
|
|
|
from authentication.confirm import CONFIRM_BACKENDS
|
|
from .confirm import ConfirmMFA, ConfirmPassword, ConfirmReLogin
|
|
from .mfa import MFAOtp, MFASms, MFARadius
|
|
|
|
RSA_PRIVATE_KEY = 'rsa_private_key'
|
|
RSA_PUBLIC_KEY = 'rsa_public_key'
|
|
|
|
CONFIRM_BACKEND_MAP = {backend.name: backend for backend in CONFIRM_BACKENDS}
|
|
|
|
|
|
class ConfirmType(TextChoices):
|
|
ReLogin = ConfirmReLogin.name, ConfirmReLogin.display_name
|
|
PASSWORD = ConfirmPassword.name, ConfirmPassword.display_name
|
|
MFA = ConfirmMFA.name, ConfirmMFA.display_name
|
|
|
|
@classmethod
|
|
def get_can_confirm_types(cls, confirm_type):
|
|
start = cls.values.index(confirm_type)
|
|
return cls.values[start:]
|
|
|
|
@classmethod
|
|
def get_can_confirm_backend_classes(cls, confirm_type):
|
|
types = cls.get_can_confirm_types(confirm_type)
|
|
backend_classes = [
|
|
CONFIRM_BACKEND_MAP[tp] for tp in types if tp in CONFIRM_BACKEND_MAP
|
|
]
|
|
return backend_classes
|
|
|
|
|
|
class MFAType(TextChoices):
|
|
OTP = MFAOtp.name, MFAOtp.display_name
|
|
SMS = MFASms.name, MFASms.display_name
|
|
Radius = MFARadius.name, MFARadius.display_name
|