mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.2 KiB
37 lines
1.2 KiB
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) |
|
types = cls.values[start:] |
|
types.reverse() |
|
return types |
|
|
|
@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
|
|
|