diff --git a/apps/authentication/api/login_confirm.py b/apps/authentication/api/login_confirm.py index 71613348c..5bddda4e3 100644 --- a/apps/authentication/api/login_confirm.py +++ b/apps/authentication/api/login_confirm.py @@ -6,6 +6,8 @@ from rest_framework.permissions import AllowAny from common.utils import get_logger from .. import errors, mixins +from django.contrib.auth import logout as auth_logout + __all__ = ['TicketStatusApi'] logger = get_logger(__name__) @@ -19,8 +21,11 @@ class TicketStatusApi(mixins.AuthMixin, APIView): self.check_user_login_confirm() self.request.session['auth_third_party_done'] = 1 return Response({"msg": "ok"}) + except errors.LoginConfirmOtherError as e: + self.send_auth_signal(success=False, user=request.user, username=request.user.name, reason=e.as_data().get('msg')) + auth_logout(request) + return Response(e.as_data(), status=200) except errors.NeedMoreInfoError as e: - self.send_auth_signal(success=False, reason=e.as_data().get('msg')) return Response(e.as_data(), status=200) def delete(self, request, *args, **kwargs): diff --git a/apps/templates/resource_download.html b/apps/templates/resource_download.html index 4b60e1e09..9938d60a4 100644 --- a/apps/templates/resource_download.html +++ b/apps/templates/resource_download.html @@ -15,7 +15,7 @@ p {
{% trans 'JumpServer Client, currently used to launch the client, now only support launch RDP SSH client, The Telnet client will next' %}
diff --git a/apps/tickets/serializers/flow.py b/apps/tickets/serializers/flow.py index 42c7bed15..e8c066100 100644 --- a/apps/tickets/serializers/flow.py +++ b/apps/tickets/serializers/flow.py @@ -3,6 +3,7 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers from orgs.models import Organization +from orgs.utils import get_current_org_id from orgs.mixins.serializers import OrgResourceModelSerializerMixin from tickets.models import TicketFlow, ApprovalRule from tickets.const import TicketApprovalStrategy @@ -96,7 +97,9 @@ class TicketFlowSerializer(OrgResourceModelSerializerMixin): @atomic def update(self, instance, validated_data): - if instance.org_id == Organization.ROOT_ID: + current_org_id = get_current_org_id() + root_org_id = Organization.ROOT_ID + if instance.org_id == root_org_id and current_org_id != root_org_id: instance = self.create(validated_data) else: instance = self.create_or_update('update', validated_data, instance)