保存明文密码

This commit is contained in:
2025-05-09 21:28:44 +08:00
parent 917b32fcfd
commit 74337ca10d
4 changed files with 34 additions and 0 deletions

View 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='明文密码'),
),
]

View File

@@ -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"

View File

@@ -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:

View File

@@ -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],
)
)