mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-05-11 05:07:13 +00:00
perf: 用户 phone wechat 加密 (#11789)
Co-authored-by: feng <1304903146@qq.com>
This commit is contained in:
45
apps/users/migrations/0048_wechat_phone_encrypt.py
Normal file
45
apps/users/migrations/0048_wechat_phone_encrypt.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# Generated by Django 4.1.10 on 2023-10-10 06:57
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
import common.db.fields
|
||||
|
||||
users_bulked = []
|
||||
|
||||
|
||||
def get_encrypt_fields_value(apps, *args):
|
||||
global users_bulked
|
||||
user_model = apps.get_model('users', 'User')
|
||||
bulk_size = 2000
|
||||
users = user_model.objects.all()
|
||||
users_bulked = [
|
||||
users[i:i + bulk_size]
|
||||
for i in range(0, users.count(), bulk_size)
|
||||
]
|
||||
|
||||
|
||||
def migrate_encrypt_fields(apps, *args):
|
||||
user_model = apps.get_model('users', 'User')
|
||||
for _users in users_bulked:
|
||||
user_model.objects.bulk_update(_users, ['phone', 'wechat'])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('users', '0047_user_date_api_key_last_used'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(get_encrypt_fields_value),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='wechat',
|
||||
field=common.db.fields.EncryptCharField(blank=True, max_length=128, verbose_name='Wechat'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='phone',
|
||||
field=common.db.fields.EncryptCharField(blank=True, max_length=128, null=True, verbose_name='Phone'),
|
||||
),
|
||||
migrations.RunPython(migrate_encrypt_fields),
|
||||
]
|
||||
@@ -805,11 +805,11 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, JSONFilterMixin, Abstract
|
||||
avatar = models.ImageField(
|
||||
upload_to="avatar", null=True, verbose_name=_('Avatar')
|
||||
)
|
||||
wechat = models.CharField(
|
||||
wechat = fields.EncryptCharField(
|
||||
max_length=128, blank=True, verbose_name=_('Wechat')
|
||||
)
|
||||
phone = models.CharField(
|
||||
max_length=20, blank=True, null=True, verbose_name=_('Phone')
|
||||
phone = fields.EncryptCharField(
|
||||
max_length=128, blank=True, null=True, verbose_name=_('Phone')
|
||||
)
|
||||
mfa_level = models.SmallIntegerField(
|
||||
default=0, choices=MFAMixin.MFA_LEVEL_CHOICES, verbose_name=_('MFA')
|
||||
|
||||
Reference in New Issue
Block a user