mirror of https://github.com/jumpserver/jumpserver
[Update] 添加用户profile public-key序列类
parent
3e5d949610
commit
3b8a24eeb7
|
@ -47,6 +47,10 @@ class AuthMixin:
|
||||||
post_user_change_password.send(self.__class__, user=self)
|
post_user_change_password.send(self.__class__, user=self)
|
||||||
super().set_password(raw_password)
|
super().set_password(raw_password)
|
||||||
|
|
||||||
|
def set_public_key(self, public_key):
|
||||||
|
self.public_key = public_key
|
||||||
|
self.save()
|
||||||
|
|
||||||
def can_update_password(self):
|
def can_update_password(self):
|
||||||
return self.is_local
|
return self.is_local
|
||||||
|
|
||||||
|
@ -79,6 +83,14 @@ class AuthMixin:
|
||||||
pass
|
pass
|
||||||
return PubKey()
|
return PubKey()
|
||||||
|
|
||||||
|
def get_public_key_comment(self):
|
||||||
|
return self.public_key_obj.comment
|
||||||
|
|
||||||
|
def get_public_key_hash_md5(self):
|
||||||
|
if not callable(self.public_key_obj.hash_md5):
|
||||||
|
return ''
|
||||||
|
return self.public_key_obj.hash_md5()
|
||||||
|
|
||||||
def reset_password(self, new_password):
|
def reset_password(self, new_password):
|
||||||
self.set_password(new_password)
|
self.set_password(new_password)
|
||||||
self.save()
|
self.save()
|
||||||
|
|
|
@ -193,8 +193,12 @@ class UserRoleSerializer(serializers.Serializer):
|
||||||
class UserProfileSerializer(UserSerializer):
|
class UserProfileSerializer(UserSerializer):
|
||||||
admin_or_audit_orgs = UserOrgSerializer(many=True, read_only=True)
|
admin_or_audit_orgs = UserOrgSerializer(many=True, read_only=True)
|
||||||
current_org_roles = serializers.ListField(read_only=True)
|
current_org_roles = serializers.ListField(read_only=True)
|
||||||
public_key_comment = serializers.SerializerMethodField()
|
public_key_comment = serializers.CharField(
|
||||||
public_key_hash_md5 = serializers.SerializerMethodField()
|
source='get_public_key_comment', required=False, read_only=True, max_length=128
|
||||||
|
)
|
||||||
|
public_key_hash_md5 = serializers.CharField(
|
||||||
|
source='get_public_key_hash_md5', required=False, read_only=True, max_length=128
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(UserSerializer.Meta):
|
class Meta(UserSerializer.Meta):
|
||||||
fields = UserSerializer.Meta.fields + [
|
fields = UserSerializer.Meta.fields + [
|
||||||
|
@ -226,16 +230,6 @@ class UserProfileSerializer(UserSerializer):
|
||||||
fields.remove('public_key')
|
fields.remove('public_key')
|
||||||
extra_kwargs.pop('public_key', None)
|
extra_kwargs.pop('public_key', None)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_public_key_comment(obj):
|
|
||||||
return obj.public_key_obj.comment
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_public_key_hash_md5(obj):
|
|
||||||
if callable(obj.public_key_obj.hash_md5):
|
|
||||||
return obj.public_key_obj.hash_md5()
|
|
||||||
return ''
|
|
||||||
|
|
||||||
|
|
||||||
class UserUpdatePasswordSerializer(serializers.ModelSerializer):
|
class UserUpdatePasswordSerializer(serializers.ModelSerializer):
|
||||||
old_password = serializers.CharField(required=True, max_length=128, write_only=True)
|
old_password = serializers.CharField(required=True, max_length=128, write_only=True)
|
||||||
|
@ -273,4 +267,27 @@ class UserUpdatePasswordSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class UserUpdatePublicKeySerializer(serializers.ModelSerializer):
|
class UserUpdatePublicKeySerializer(serializers.ModelSerializer):
|
||||||
pass
|
public_key_comment = serializers.CharField(
|
||||||
|
source='get_public_key_comment', required=False, read_only=True, max_length=128
|
||||||
|
)
|
||||||
|
public_key_hash_md5 = serializers.CharField(
|
||||||
|
source='get_public_key_hash_md5', required=False, read_only=True, max_length=128
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
fields = ['public_key_comment', 'public_key_hash_md5', 'public_key']
|
||||||
|
extra_kwargs = {
|
||||||
|
'public_key': {'required': True, 'write_only': True, 'max_length': 2048}
|
||||||
|
}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def validate_public_key(value):
|
||||||
|
if not validate_ssh_public_key(value):
|
||||||
|
raise serializers.ValidationError(_('Not a valid ssh public key'))
|
||||||
|
return value
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
new_public_key = self.validated_data.get('public_key')
|
||||||
|
instance.set_public_key(new_public_key)
|
||||||
|
return instance
|
||||||
|
|
Loading…
Reference in New Issue