perf: user add has_public_keys

pull/15992/head
Eric 2025-08-29 18:22:03 +08:00 committed by 老广
parent 6d1f26b0f8
commit e5db28c014
3 changed files with 17 additions and 2 deletions

View File

@ -10,7 +10,7 @@ from rest_framework_bulk.generics import BulkModelViewSet
from common.api import CommonApiMixin, SuggestionMixin
from common.drf.filters import AttrRulesFilterBackend
from common.utils import get_logger
from common.utils import get_logger, is_uuid
from orgs.utils import current_org, tmp_to_root_org
from rbac.models import Role, RoleBinding
from rbac.permissions import RBACPermission
@ -52,6 +52,12 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, SuggestionMixin, BulkModelV
'bulk_remove': 'users.remove_user',
}
def get_object(self):
pk = self.kwargs.get(self.lookup_field)
if not is_uuid(pk):
return self.get_queryset().get(username=pk)
return super().get_object()
def allow_bulk_destroy(self, qs, filtered):
is_valid = filtered.count() < qs.count()
if not is_valid:

View File

@ -146,6 +146,11 @@ class AuthMixin:
def can_create_ssh_key(self):
return self.ssh_keys.count() < settings.TERMINAL_SSH_KEY_LIMIT_COUNT
@lazyproperty
def has_public_keys(self):
count = self.ssh_keys.filter(is_active=True).count()
return count > 0
def can_update_password(self):
return self.is_local

View File

@ -394,9 +394,13 @@ class UserRetrieveSerializer(UserSerializer):
login_confirm_settings = serializers.PrimaryKeyRelatedField(
read_only=True, source="login_confirm_setting.reviewers", many=True
)
has_public_keys = serializers.BooleanField(
label=_("Has public keys"),
read_only=True,
)
class Meta(UserSerializer.Meta):
fields = UserSerializer.Meta.fields + ["login_confirm_settings"]
fields = UserSerializer.Meta.fields + ["login_confirm_settings", "has_public_keys"]
class SmsUserSerializer(serializers.ModelSerializer):