From b262643f0aa560278f9ce464e6a4f2b729125323 Mon Sep 17 00:00:00 2001 From: "Jiangjie.Bai" Date: Tue, 12 Jul 2022 18:27:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=9E=E6=8E=A5=E4=BB=A4=E7=89=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20expire=5Ftime=20=E5=92=8C=20is=5Fvalid=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/models.py | 8 ++++++++ apps/authentication/serializers/connection_token.py | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/authentication/models.py b/apps/authentication/models.py index c0713ac1a..d04a3fa4e 100644 --- a/apps/authentication/models.py +++ b/apps/authentication/models.py @@ -114,6 +114,14 @@ class ConnectionToken(OrgModelMixin, models.JMSModel): def is_expired(self): return self.date_expired < timezone.now() + @property + def expire_time(self): + interval = self.date_expired - timezone.now() + seconds = interval.total_seconds() + if seconds < 0: + seconds = 0 + return int(seconds) + def expire(self): self.date_expired = timezone.now() self.save() diff --git a/apps/authentication/serializers/connection_token.py b/apps/authentication/serializers/connection_token.py index c2af89aff..1b639bec6 100644 --- a/apps/authentication/serializers/connection_token.py +++ b/apps/authentication/serializers/connection_token.py @@ -20,7 +20,8 @@ __all__ = [ class ConnectionTokenSerializer(OrgResourceModelSerializerMixin): type_display = serializers.ReadOnlyField(source='get_type_display', label=_("Type display")) - validity = serializers.BooleanField(source='is_valid', read_only=True, label=_('Validity')) + is_valid = serializers.BooleanField(read_only=True, label=_('Validity')) + expire_time = serializers.IntegerField(read_only=True, label=_('Expired time')) class Meta: model = ConnectionToken @@ -35,7 +36,7 @@ class ConnectionTokenSerializer(OrgResourceModelSerializerMixin): ] read_only_fields = [ # 普通 Token 不支持指定 user - 'user', 'validity', + 'user', 'is_valid', 'expire_time', 'type_display', 'user_display', 'system_user_display', 'asset_display', 'application_display', ] @@ -184,6 +185,7 @@ class ConnectionTokenSecretSerializer(OrgResourceModelSerializerMixin): domain = ConnectionTokenDomainSerializer(read_only=True) cmd_filter_rules = ConnectionTokenCmdFilterRuleSerializer(many=True) actions = ActionsField() + expired_at = serializers.IntegerField() class Meta: model = ConnectionToken