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.
64 lines
1.6 KiB
64 lines
1.6 KiB
from django.utils.translation import ugettext_lazy as _ |
|
from django.conf import settings |
|
|
|
from .base import BaseMFA |
|
from common.sdk.sms import SendAndVerifySMSUtil |
|
|
|
sms_failed_msg = _("SMS verify code invalid") |
|
|
|
|
|
class MFASms(BaseMFA): |
|
name = 'sms' |
|
display_name = _("SMS") |
|
placeholder = _("SMS verification code") |
|
|
|
def __init__(self, user): |
|
super().__init__(user) |
|
phone = user.phone if self.is_authenticated() else '' |
|
self.sms = SendAndVerifySMSUtil(phone) |
|
|
|
def check_code(self, code): |
|
assert self.is_authenticated() |
|
ok = False |
|
msg = '' |
|
try: |
|
ok = self.sms.verify(code) |
|
except Exception as e: |
|
msg = str(e) |
|
return ok, msg |
|
|
|
def is_active(self): |
|
if not self.is_authenticated(): |
|
return True |
|
return self.user.phone |
|
|
|
@staticmethod |
|
def challenge_required(): |
|
return True |
|
|
|
def send_challenge(self): |
|
self.sms.gen_and_send() |
|
|
|
@staticmethod |
|
def global_enabled(): |
|
return settings.SMS_ENABLED |
|
|
|
def get_enable_url(self) -> str: |
|
return '/ui/#/profile/setting?activeTab=ProfileUpdate' |
|
|
|
def can_disable(self) -> bool: |
|
return True |
|
|
|
def disable(self): |
|
return '/ui/#/profile/setting?activeTab=ProfileUpdate' |
|
|
|
@staticmethod |
|
def help_text_of_enable(): |
|
return _("Set phone number to enable") |
|
|
|
@staticmethod |
|
def help_text_of_disable(): |
|
return _("Clear phone number to disable") |
|
|
|
def get_disable_url(self) -> str: |
|
return '/ui/#/profile/setting?activeTab=ProfileUpdate'
|
|
|