mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-10 11:49:10 +00:00
[Feature] 支持otp
This commit is contained in:
@@ -45,7 +45,7 @@ class User(AbstractUser):
|
||||
wechat = models.CharField(max_length=128, blank=True, verbose_name=_('Wechat'))
|
||||
phone = models.CharField(max_length=20, blank=True, null=True, verbose_name=_('Phone'))
|
||||
otp_level = models.SmallIntegerField(default=0, choices=OTP_LEVEL_CHOICES, verbose_name=_('Enable OTP'))
|
||||
otp_secret_key = models.CharField(max_length=16, blank=True)
|
||||
otp_secret_key = models.CharField(max_length=16, blank=True, null=True)
|
||||
# Todo: Auto generate key, let user download
|
||||
_private_key = models.CharField(max_length=5000, blank=True, verbose_name=_('Private key'))
|
||||
_public_key = models.CharField(max_length=5000, blank=True, verbose_name=_('Public key'))
|
||||
@@ -211,15 +211,20 @@ class User(AbstractUser):
|
||||
def otp_enabled(self):
|
||||
return self.otp_level > 0
|
||||
|
||||
def enabled_otp(self):
|
||||
self.otp_level = 1
|
||||
@property
|
||||
def otp_force_enabled(self):
|
||||
return self.otp_level == 2
|
||||
|
||||
def enable_otp(self):
|
||||
if not self.otp_force_enabled:
|
||||
self.otp_level = 1
|
||||
|
||||
def force_enable_otp(self):
|
||||
self.otp_level = 2
|
||||
|
||||
@property
|
||||
def otp_force_enabled(self):
|
||||
return self.otp_level == 2
|
||||
def disable_otp(self):
|
||||
self.otp_level = 0
|
||||
self.otp_secret_key = ''
|
||||
|
||||
def to_json(self):
|
||||
return OrderedDict({
|
||||
@@ -233,6 +238,7 @@ class User(AbstractUser):
|
||||
'groups': [group.name for group in self.groups.all()],
|
||||
'wechat': self.wechat,
|
||||
'phone': self.phone,
|
||||
'otp_level': self.otp_level,
|
||||
'comment': self.comment,
|
||||
'date_expired': self.date_expired.strftime('%Y-%m-%d %H:%M:%S') if self.date_expired is not None else None
|
||||
})
|
||||
|
Reference in New Issue
Block a user