mirror of https://github.com/jumpserver/jumpserver
fix: 修复第三方用户登录复核时,可以跳过的问题
parent
b81416d973
commit
48067415ef
|
@ -22,7 +22,7 @@ class LoginACLSerializer(BulkModelSerializer):
|
||||||
reviewers = ObjectRelatedField(
|
reviewers = ObjectRelatedField(
|
||||||
queryset=User.objects, label=_("Reviewers"), many=True, required=False
|
queryset=User.objects, label=_("Reviewers"), many=True, required=False
|
||||||
)
|
)
|
||||||
action = LabeledChoiceField(choices=LoginACL.ActionChoices.choices)
|
action = LabeledChoiceField(choices=LoginACL.ActionChoices.choices, label=_('Action'))
|
||||||
reviewers_amount = serializers.IntegerField(
|
reviewers_amount = serializers.IntegerField(
|
||||||
read_only=True, source="reviewers.count", label=_("Reviewers amount")
|
read_only=True, source="reviewers.count", label=_("Reviewers amount")
|
||||||
)
|
)
|
||||||
|
|
|
@ -20,6 +20,7 @@ class TicketStatusApi(mixins.AuthMixin, APIView):
|
||||||
try:
|
try:
|
||||||
self.check_user_login_confirm()
|
self.check_user_login_confirm()
|
||||||
self.request.session['auth_third_party_done'] = 1
|
self.request.session['auth_third_party_done'] = 1
|
||||||
|
self.request.session.pop('auth_third_party_required', '')
|
||||||
return Response({"msg": "ok"})
|
return Response({"msg": "ok"})
|
||||||
except errors.LoginConfirmOtherError as e:
|
except errors.LoginConfirmOtherError as e:
|
||||||
reason = e.msg
|
reason = e.msg
|
||||||
|
|
|
@ -62,6 +62,17 @@ class ThirdPartyLoginMiddleware(mixins.AuthMixin):
|
||||||
return response
|
return response
|
||||||
if not request.session.get('auth_third_party_required'):
|
if not request.session.get('auth_third_party_required'):
|
||||||
return response
|
return response
|
||||||
|
white_urls = [
|
||||||
|
'jsi18n/', '/static/',
|
||||||
|
'login/guard', 'login/wait-confirm',
|
||||||
|
'login-confirm-ticket/status',
|
||||||
|
'settings/public/open',
|
||||||
|
'core/auth/login', 'core/auth/logout'
|
||||||
|
]
|
||||||
|
for url in white_urls:
|
||||||
|
if request.path.find(url) > -1:
|
||||||
|
return response
|
||||||
|
|
||||||
ip = get_request_ip(request)
|
ip = get_request_ip(request)
|
||||||
try:
|
try:
|
||||||
self.request = request
|
self.request = request
|
||||||
|
@ -89,7 +100,6 @@ class ThirdPartyLoginMiddleware(mixins.AuthMixin):
|
||||||
guard_url = "%s?%s" % (guard_url, args)
|
guard_url = "%s?%s" % (guard_url, args)
|
||||||
response = redirect(guard_url)
|
response = redirect(guard_url)
|
||||||
finally:
|
finally:
|
||||||
request.session.pop('auth_third_party_required', '')
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -369,7 +369,7 @@ class AuthACLMixin:
|
||||||
def check_user_login_confirm(self):
|
def check_user_login_confirm(self):
|
||||||
ticket = self.get_ticket()
|
ticket = self.get_ticket()
|
||||||
if not ticket:
|
if not ticket:
|
||||||
raise errors.LoginConfirmOtherError('', "Not found")
|
raise errors.LoginConfirmOtherError('', "Not found", '')
|
||||||
elif ticket.is_state(ticket.State.approved):
|
elif ticket.is_state(ticket.State.approved):
|
||||||
self.request.session["auth_confirm_required"] = ''
|
self.request.session["auth_confirm_required"] = ''
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue