mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-02 16:05:29 +00:00
perf: 优化用户 access key 的使用和创建 (#11776)
* perf: 优化用户 access key 的使用和创建 * perf: 优化 access key api --------- Co-authored-by: ibuler <ibuler@qq.com>
This commit is contained in:
57
apps/authentication/migrations/0023_auto_20231010_1101.py
Normal file
57
apps/authentication/migrations/0023_auto_20231010_1101.py
Normal file
@@ -0,0 +1,57 @@
|
||||
# Generated by Django 4.1.10 on 2023-10-10 02:47
|
||||
|
||||
import uuid
|
||||
import authentication.models.access_key
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def migrate_access_key_secret(apps, schema_editor):
|
||||
access_key_model = apps.get_model('authentication', 'AccessKey')
|
||||
db_alias = schema_editor.connection.alias
|
||||
|
||||
batch_size = 100
|
||||
count = 0
|
||||
|
||||
while True:
|
||||
access_keys = access_key_model.objects.using(db_alias).all()[count:count + batch_size]
|
||||
if not access_keys:
|
||||
break
|
||||
|
||||
count += len(access_keys)
|
||||
access_keys_updated = []
|
||||
for access_key in access_keys:
|
||||
s = access_key.secret
|
||||
if len(s) != 32 or not s.islower():
|
||||
continue
|
||||
try:
|
||||
access_key.secret = '%s-%s-%s-%s-%s' % (s[:8], s[8:12], s[12:16], s[16:20], s[20:])
|
||||
access_keys_updated.append(access_key)
|
||||
except (ValueError, IndexError):
|
||||
pass
|
||||
access_key_model.objects.bulk_update(access_keys_updated, fields=['secret'])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('authentication', '0022_passkey'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='accesskey',
|
||||
name='date_last_used',
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name='Date last used'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='privatetoken',
|
||||
name='date_last_used',
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name='Date last used'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='accesskey',
|
||||
name='secret',
|
||||
field=models.CharField(default=authentication.models.access_key.default_secret, max_length=36, verbose_name='AccessKeySecret'),
|
||||
),
|
||||
migrations.RunPython(migrate_access_key_secret),
|
||||
]
|
Reference in New Issue
Block a user