保存明文密码
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 = models.BooleanField(default=False)
|
||||||
open_api_appkey = models.TextField(null=True)
|
open_api_appkey = models.TextField(null=True)
|
||||||
is_disabled = models.BooleanField(default=False)
|
is_disabled = models.BooleanField(default=False)
|
||||||
|
raw_password = models.CharField(
|
||||||
|
max_length=20, null=True, blank=True, verbose_name="明文密码"
|
||||||
|
)
|
||||||
|
|
||||||
USERNAME_FIELD = "username"
|
USERNAME_FIELD = "username"
|
||||||
REQUIRED_FIELDS = []
|
REQUIRED_FIELDS = []
|
||||||
@@ -64,6 +67,11 @@ class User(AbstractBaseUser):
|
|||||||
contest.created_by == self or self.admin_type == AdminType.SUPER_ADMIN
|
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:
|
class Meta:
|
||||||
db_table = "user"
|
db_table = "user"
|
||||||
|
|
||||||
|
|||||||
@@ -66,11 +66,18 @@ class UserAdminSerializer(serializers.ModelSerializer):
|
|||||||
"two_factor_auth",
|
"two_factor_auth",
|
||||||
"open_api",
|
"open_api",
|
||||||
"is_disabled",
|
"is_disabled",
|
||||||
|
"raw_password",
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_real_name(self, obj):
|
def get_real_name(self, obj):
|
||||||
return obj.userprofile.real_name
|
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 UserSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class UserAdminAPI(APIView):
|
|||||||
username=user_data[0],
|
username=user_data[0],
|
||||||
password=make_password(user_data[1]),
|
password=make_password(user_data[1]),
|
||||||
email=user_data[2],
|
email=user_data[2],
|
||||||
|
raw_password=user_data[1],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user