From e4f5e212190e19709dcc6584d1ef956ac12c244f Mon Sep 17 00:00:00 2001 From: wangruidong <940853815@qq.com> Date: Wed, 5 Nov 2025 16:20:20 +0800 Subject: [PATCH] perf: Support batch import of leak passwords --- apps/i18n/lina/en.json | 3 ++- apps/settings/api/security.py | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/i18n/lina/en.json b/apps/i18n/lina/en.json index 5fd3848a8..c8456c79a 100644 --- a/apps/i18n/lina/en.json +++ b/apps/i18n/lina/en.json @@ -1627,5 +1627,6 @@ "removeWarningMsg": "Are you sure you want to remove", "setVariable": "Set variable", "userId": "User ID", - "userName": "User name" + "userName": "User name", + "LeakPasswordList": "Leaked password list" } \ No newline at end of file diff --git a/apps/settings/api/security.py b/apps/settings/api/security.py index 14c4ed4b1..b991d7a60 100644 --- a/apps/settings/api/security.py +++ b/apps/settings/api/security.py @@ -6,6 +6,7 @@ from rest_framework.generics import ListAPIView, CreateAPIView from rest_framework.views import Response from rest_framework_bulk.generics import BulkModelViewSet +from common.api.action import RenderToJsonMixin from common.drf.filters import IDSpmFilterBackend from users.utils import LoginIpBlockUtil from ..models import LeakPasswords @@ -61,7 +62,7 @@ class UnlockIPSecurityAPI(CreateAPIView): return Response(status=200) -class LeakPasswordViewSet(BulkModelViewSet): +class LeakPasswordViewSet(BulkModelViewSet, RenderToJsonMixin): serializer_class = LeakPasswordPSerializer model = LeakPasswords rbac_perms = { @@ -70,6 +71,12 @@ class LeakPasswordViewSet(BulkModelViewSet): queryset = LeakPasswords.objects.none() search_fields = ['password'] + def get_object(self): + pk = self.kwargs.get('pk') + if pk: + return self.get_queryset().get(id=pk) + return super().get_object() + def get_queryset(self): return LeakPasswords.objects.using('sqlite').all()