保存明文密码
This commit is contained in:
18
account/migrations/0014_user_raw_password.py
Normal file
18
account/migrations/0014_user_raw_password.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.0.6 on 2025-05-09 13:26
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('account', '0013_alter_user_session_keys_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='user',
|
||||
name='raw_password',
|
||||
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='明文密码'),
|
||||
),
|
||||
]
|
||||
@@ -41,6 +41,9 @@ class User(AbstractBaseUser):
|
||||
open_api = models.BooleanField(default=False)
|
||||
open_api_appkey = models.TextField(null=True)
|
||||
is_disabled = models.BooleanField(default=False)
|
||||
raw_password = models.CharField(
|
||||
max_length=20, null=True, blank=True, verbose_name="明文密码"
|
||||
)
|
||||
|
||||
USERNAME_FIELD = "username"
|
||||
REQUIRED_FIELDS = []
|
||||
@@ -64,6 +67,11 @@ class User(AbstractBaseUser):
|
||||
contest.created_by == self or self.admin_type == AdminType.SUPER_ADMIN
|
||||
)
|
||||
|
||||
def set_password(self, raw_password):
|
||||
super().set_password(raw_password)
|
||||
self.raw_password = raw_password
|
||||
self.save()
|
||||
|
||||
class Meta:
|
||||
db_table = "user"
|
||||
|
||||
|
||||
@@ -66,11 +66,18 @@ class UserAdminSerializer(serializers.ModelSerializer):
|
||||
"two_factor_auth",
|
||||
"open_api",
|
||||
"is_disabled",
|
||||
"raw_password",
|
||||
]
|
||||
|
||||
def get_real_name(self, obj):
|
||||
return obj.userprofile.real_name
|
||||
|
||||
def to_representation(self, instance):
|
||||
data = super().to_representation(instance)
|
||||
if instance.admin_type != AdminType.REGULAR_USER:
|
||||
data.pop("raw_password", None)
|
||||
return data
|
||||
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
||||
@@ -39,6 +39,7 @@ class UserAdminAPI(APIView):
|
||||
username=user_data[0],
|
||||
password=make_password(user_data[1]),
|
||||
email=user_data[2],
|
||||
raw_password=user_data[1],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user