mirror of https://github.com/jumpserver/jumpserver
feat: 管理用户详情页添加认证方式与秘钥指纹
parent
c1bf854824
commit
24fb8b2a89
|
@ -33,6 +33,10 @@ class AdminUserViewSet(OrgBulkModelViewSet):
|
||||||
search_fields = filterset_fields
|
search_fields = filterset_fields
|
||||||
serializer_class = serializers.AdminUserSerializer
|
serializer_class = serializers.AdminUserSerializer
|
||||||
permission_classes = (IsOrgAdmin,)
|
permission_classes = (IsOrgAdmin,)
|
||||||
|
serializer_classes = {
|
||||||
|
'default': serializers.AdminUserSerializer,
|
||||||
|
'retrieve': serializers.AdminUserDetailSerializer,
|
||||||
|
}
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = super().get_queryset()
|
queryset = super().get_queryset()
|
||||||
|
|
|
@ -11,10 +11,12 @@ from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
from common.db.models import ChoiceSet
|
||||||
from common.utils import random_string
|
from common.utils import random_string
|
||||||
from common.utils import (
|
from common.utils import (
|
||||||
ssh_key_string_to_obj, ssh_key_gen, get_logger, lazyproperty
|
ssh_key_string_to_obj, ssh_key_gen, get_logger, lazyproperty
|
||||||
)
|
)
|
||||||
|
from common.utils.encode import ssh_pubkey_gen
|
||||||
from common.validators import alphanumeric
|
from common.validators import alphanumeric
|
||||||
from common import fields
|
from common import fields
|
||||||
from orgs.mixins.models import OrgModelMixin
|
from orgs.mixins.models import OrgModelMixin
|
||||||
|
@ -106,6 +108,19 @@ class AuthMixin:
|
||||||
username = ''
|
username = ''
|
||||||
_prefer = 'system_user'
|
_prefer = 'system_user'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ssh_key_fingerprint(self):
|
||||||
|
if self.public_key:
|
||||||
|
public_key = self.public_key
|
||||||
|
elif self.private_key:
|
||||||
|
public_key = ssh_pubkey_gen(self.private_key, self.password)
|
||||||
|
else:
|
||||||
|
return ''
|
||||||
|
|
||||||
|
public_key_obj = sshpubkeys.SSHKey(public_key)
|
||||||
|
fingerprint = public_key_obj.hash_md5()
|
||||||
|
return fingerprint
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def private_key_obj(self):
|
def private_key_obj(self):
|
||||||
if self.private_key:
|
if self.private_key:
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from common.drf.serializers import AdaptedBulkListSerializer
|
|
||||||
|
|
||||||
from ..models import Node, AdminUser
|
from ..models import Node, AdminUser
|
||||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||||
|
|
||||||
|
@ -17,7 +15,6 @@ class AdminUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
list_serializer_class = AdaptedBulkListSerializer
|
|
||||||
model = AdminUser
|
model = AdminUser
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'name', 'username', 'password', 'private_key', 'public_key',
|
'id', 'name', 'username', 'password', 'private_key', 'public_key',
|
||||||
|
@ -33,6 +30,11 @@ class AdminUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class AdminUserDetailSerializer(AdminUserSerializer):
|
||||||
|
class Meta(AdminUserSerializer.Meta):
|
||||||
|
fields = AdminUserSerializer.Meta.fields + ['ssh_key_fingerprint']
|
||||||
|
|
||||||
|
|
||||||
class AdminUserAuthSerializer(AuthSerializer):
|
class AdminUserAuthSerializer(AuthSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
Loading…
Reference in New Issue