diff --git a/apps/authentication/api/connection_token.py b/apps/authentication/api/connection_token.py index a6e818cce..e08ba5291 100644 --- a/apps/authentication/api/connection_token.py +++ b/apps/authentication/api/connection_token.py @@ -159,7 +159,7 @@ class RDPFileClientProtocolURLMixin: 'ip': endpoint.host, 'port': str(endpoint.ssh_port), 'username': 'JMS-{}'.format(str(token.id)), - 'password': token.secret + 'password': token.value } token = json.dumps(data) return filename, token @@ -176,9 +176,9 @@ class ExtraActionApiMixin(RDPFileClientProtocolURLMixin): get_serializer: callable perform_create: callable - @action(methods=['POST', 'GET'], detail=False, url_path='rdp/file') - def get_rdp_file(self, request, *args, **kwargs): - token = self.create_connection_token() + @action(methods=['POST', 'GET'], detail=True, url_path='rdp-file') + def get_rdp_file(self, *args, **kwargs): + token = self.get_object() token.is_valid() filename, content = self.get_rdp_file_info(token) filename = '{}.rdp'.format(filename) @@ -186,9 +186,9 @@ class ExtraActionApiMixin(RDPFileClientProtocolURLMixin): response['Content-Disposition'] = 'attachment; filename*=UTF-8\'\'%s' % filename return response - @action(methods=['POST', 'GET'], detail=False, url_path='client-url') - def get_client_protocol_url(self, request, *args, **kwargs): - token = self.create_connection_token() + @action(methods=['POST', 'GET'], detail=True, url_path='client-url') + def get_client_protocol_url(self, *args, **kwargs): + token = self.get_object() token.is_valid() try: protocol_data = self.get_client_protocol_data(token) @@ -207,14 +207,6 @@ class ExtraActionApiMixin(RDPFileClientProtocolURLMixin): instance.expire() return Response(status=status.HTTP_204_NO_CONTENT) - def create_connection_token(self): - data = self.request.query_params if self.request.method == 'GET' else self.request.data - serializer = self.get_serializer(data=data) - serializer.is_valid(raise_exception=True) - self.perform_create(serializer) - token: ConnectionToken = serializer.instance - return token - class ConnectionTokenViewSet(ExtraActionApiMixin, RootOrgViewMixin, JMSModelViewSet): filterset_fields = ( diff --git a/apps/authentication/models/connection_token.py b/apps/authentication/models/connection_token.py index 4bfac68d2..2298eb0f3 100644 --- a/apps/authentication/models/connection_token.py +++ b/apps/authentication/models/connection_token.py @@ -1,17 +1,17 @@ -import time from datetime import timedelta + +from django.conf import settings +from django.db import models from django.utils import timezone from django.utils.translation import ugettext_lazy as _ -from django.db import models -from django.conf import settings from rest_framework.exceptions import PermissionDenied -from orgs.mixins.models import OrgModelMixin +from assets.const import Protocol +from common.db.fields import EncryptCharField +from common.db.models import JMSBaseModel from common.utils import lazyproperty, pretty_string from common.utils.timezone import as_current_tz -from common.db.models import JMSBaseModel -from common.db.fields import EncryptCharField -from assets.const import Protocol +from orgs.mixins.models import OrgModelMixin def date_expired_default(): @@ -21,7 +21,7 @@ def date_expired_default(): class ConnectionToken(OrgModelMixin, JMSBaseModel): value = models.CharField(max_length=64, default='', verbose_name=_("Value")) user = models.ForeignKey( - 'users.User', on_delete=models.SET_NULL, null=True, blank=True, + 'users.User', on_delete=models.SET_NULL, null=True, blank=True, related_name='connection_tokens', verbose_name=_('User') ) asset = models.ForeignKey( @@ -29,8 +29,8 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel): related_name='connection_tokens', verbose_name=_('Asset'), ) account_name = models.CharField(max_length=128, verbose_name=_("Account name")) # 登录账号Name - input_username = models.CharField(max_length=128, default='', verbose_name=_("Input Username")) - input_secret = EncryptCharField(max_length=64, default='', verbose_name=_("Input Secret")) + input_username = models.CharField(max_length=128, default='', blank=True, verbose_name=_("Input Username")) + input_secret = EncryptCharField(max_length=64, default='', blank=True, verbose_name=_("Input Secret")) protocol = models.CharField( choices=Protocol.choices, max_length=16, default=Protocol.ssh, verbose_name=_("Protocol") ) diff --git a/apps/locale/ja/LC_MESSAGES/django.mo b/apps/locale/ja/LC_MESSAGES/django.mo index 3e19617aa..f74980a81 100644 --- a/apps/locale/ja/LC_MESSAGES/django.mo +++ b/apps/locale/ja/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adfa9c01178d5f6490e616f62d41c71974d42f9e3bd078fcf1b3c7124384df0b -size 117024 +oid sha256:4a5338177d87680e0030c77f187a06664136d5dea63c8dffc43fa686091f2da4 +size 117102 diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index dddb5b792..e9f747826 100644 --- a/apps/locale/ja/LC_MESSAGES/django.po +++ b/apps/locale/ja/LC_MESSAGES/django.po @@ -603,14 +603,10 @@ msgid "All" msgstr "すべて" #: assets/models/account.py:46 -#, fuzzy -#| msgid "Manually input" msgid "Manual input" msgstr "手動入力" #: assets/models/account.py:47 -#, fuzzy -#| msgid "Dynamic code" msgid "Dynamic user" msgstr "動的コード" diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 4451b285c..e3f454768 100644 --- a/apps/locale/zh/LC_MESSAGES/django.mo +++ b/apps/locale/zh/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeaa813f4ea052a1cd85b8ae5addfde6b088fd21a0261f8724d62823835512a2 -size 104043 +oid sha256:30ae571e06eb7d2f0fee70013a812ea3bdb8e14715e1a1f4eb5e2c92311034f8 +size 104086 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 686c70a31..56b0a8f28 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -578,16 +578,12 @@ msgid "All" msgstr "全部" #: assets/models/account.py:46 -#, fuzzy -#| msgid "Manually input" msgid "Manual input" msgstr "手动输入" #: assets/models/account.py:47 -#, fuzzy -#| msgid "Dynamic code" msgid "Dynamic user" -msgstr "动态码" +msgstr "动态用户" #: assets/models/account.py:55 msgid "Su from"