From c6f92a462fd153f1502739c1fde217a0e98c72d3 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 5 Jun 2023 17:27:44 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=BF=9E=E6=8E=A5=E6=97=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=BF=9E=E6=8E=A5=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0020_connectiontoken_connect_options.py | 18 ++++++++++++++++++ apps/authentication/models/connection_token.py | 1 + .../serializers/connect_token_secret.py | 2 ++ .../serializers/connection_token.py | 4 ++-- 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 apps/authentication/migrations/0020_connectiontoken_connect_options.py diff --git a/apps/authentication/migrations/0020_connectiontoken_connect_options.py b/apps/authentication/migrations/0020_connectiontoken_connect_options.py new file mode 100644 index 000000000..15447c9b6 --- /dev/null +++ b/apps/authentication/migrations/0020_connectiontoken_connect_options.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.17 on 2023-06-05 07:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('authentication', '0019_connectiontoken_is_reusable'), + ] + + operations = [ + migrations.AddField( + model_name='connectiontoken', + name='connect_options', + field=models.JSONField(default=dict, verbose_name='Connect options'), + ), + ] diff --git a/apps/authentication/models/connection_token.py b/apps/authentication/models/connection_token.py index 6b8cd4d8e..e0793c7dc 100644 --- a/apps/authentication/models/connection_token.py +++ b/apps/authentication/models/connection_token.py @@ -38,6 +38,7 @@ class ConnectionToken(JMSOrgBaseModel): input_secret = EncryptTextField(max_length=64, default='', blank=True, verbose_name=_("Input secret")) protocol = models.CharField(max_length=16, default=Protocol.ssh, verbose_name=_("Protocol")) connect_method = models.CharField(max_length=32, verbose_name=_("Connect method")) + connect_options = models.JSONField(default=dict, verbose_name=_("Connect options")) user_display = models.CharField(max_length=128, default='', verbose_name=_("User display")) asset_display = models.CharField(max_length=128, default='', verbose_name=_("Asset display")) is_reusable = models.BooleanField(default=False, verbose_name=_("Reusable")) diff --git a/apps/authentication/serializers/connect_token_secret.py b/apps/authentication/serializers/connect_token_secret.py index feb032665..a3d56b90c 100644 --- a/apps/authentication/serializers/connect_token_secret.py +++ b/apps/authentication/serializers/connect_token_secret.py @@ -134,6 +134,7 @@ class ConnectionTokenSecretSerializer(OrgResourceModelSerializerMixin): command_filter_acls = _ConnectionTokenCommandFilterACLSerializer(read_only=True, many=True) expire_now = serializers.BooleanField(label=_('Expired now'), write_only=True, default=True) connect_method = _ConnectTokenConnectMethodSerializer(read_only=True, source='connect_method_object') + connect_options = serializers.JSONField(read_only=True) actions = ActionChoicesField() expire_at = serializers.IntegerField() @@ -144,6 +145,7 @@ class ConnectionTokenSecretSerializer(OrgResourceModelSerializerMixin): 'platform', 'command_filter_acls', 'protocol', 'domain', 'gateway', 'actions', 'expire_at', 'from_ticket', 'expire_now', 'connect_method', + 'connect_options', ] extra_kwargs = { 'value': {'read_only': True}, diff --git a/apps/authentication/serializers/connection_token.py b/apps/authentication/serializers/connection_token.py index 7d3de1bb7..74b645aec 100644 --- a/apps/authentication/serializers/connection_token.py +++ b/apps/authentication/serializers/connection_token.py @@ -26,8 +26,8 @@ class ConnectionTokenSerializer(OrgResourceModelSerializerMixin): model = ConnectionToken fields_mini = ['id', 'value'] fields_small = fields_mini + [ - 'user', 'asset', 'account', 'input_username', - 'input_secret', 'connect_method', 'protocol', 'actions', + 'user', 'asset', 'account', 'input_username', 'input_secret', + 'connect_method', 'connect_options', 'protocol', 'actions', 'is_active', 'is_reusable', 'from_ticket', 'from_ticket_info', 'date_expired', 'date_created', 'date_updated', 'created_by', 'updated_by', 'org_id', 'org_name',