feat(login): 登录日志要体现用哪个backend登录的 #4472 (#5199)

Co-authored-by: xinwen <coderWen@126.com>
This commit is contained in:
fit2bot
2020-12-09 18:43:13 +08:00
committed by GitHub
parent 80b03e73f6
commit 7c7de96158
12 changed files with 67 additions and 34 deletions

View File

@@ -7,10 +7,10 @@ import string
import random
from django.conf import settings
from django.contrib.auth.hashers import make_password
from django.contrib.auth.models import AbstractUser
from django.core.cache import cache
from django.db import models
from django.db.models import TextChoices
from django.utils.translation import ugettext_lazy as _
from django.utils import timezone
@@ -481,18 +481,12 @@ class MFAMixin:
class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser):
SOURCE_LOCAL = 'local'
SOURCE_LDAP = 'ldap'
SOURCE_OPENID = 'openid'
SOURCE_RADIUS = 'radius'
SOURCE_CAS = 'cas'
SOURCE_CHOICES = (
(SOURCE_LOCAL, _('Local')),
(SOURCE_LDAP, 'LDAP/AD'),
(SOURCE_OPENID, 'OpenID'),
(SOURCE_RADIUS, 'Radius'),
(SOURCE_CAS, 'CAS'),
)
class Source(TextChoices):
local = 'local', _('Local')
ldap = 'ldap', 'LDAP/AD'
openid = 'openid', 'OpenID'
radius = 'radius', 'Radius'
cas = 'cas', 'CAS'
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
username = models.CharField(
@@ -542,7 +536,7 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser):
max_length=30, default='', blank=True, verbose_name=_('Created by')
)
source = models.CharField(
max_length=30, default=SOURCE_LOCAL, choices=SOURCE_CHOICES,
max_length=30, default=Source.local.value, choices=Source.choices,
verbose_name=_('Source')
)
date_password_last_updated = models.DateTimeField(
@@ -593,7 +587,7 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser):
@property
def is_local(self):
return self.source == self.SOURCE_LOCAL
return self.source == self.Source.local.value
def set_unprovide_attr_if_need(self):
if not self.name:
@@ -663,6 +657,6 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser):
user.groups.add(UserGroup.initial())
def can_send_created_mail(self):
if self.email and self.source == self.SOURCE_LOCAL:
if self.email and self.source == self.Source.local.value:
return True
return False