From fab156dc5f054f61652c74b3bc39d3d63de46ec9 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 19 Dec 2024 11:38:54 +0800 Subject: [PATCH] perf: update login success redirect --- apps/authentication/views/login.py | 4 ++++ apps/users/utils.py | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/authentication/views/login.py b/apps/authentication/views/login.py index ee8bf6dfd..0407a906d 100644 --- a/apps/authentication/views/login.py +++ b/apps/authentication/views/login.py @@ -227,6 +227,10 @@ class UserLoginView(mixins.AuthMixin, UserLoginContextMixin, FormView): return redirect_url def get(self, request, *args, **kwargs): + next_page = request.GET.get(self.redirect_field_name) + if next_page: + request.session[self.redirect_field_name] = next_page + if request.user.is_staff: first_login_url = redirect_user_first_login_or_index( request, self.redirect_field_name diff --git a/apps/users/utils.py b/apps/users/utils.py index 9893b331e..f52b6d853 100644 --- a/apps/users/utils.py +++ b/apps/users/utils.py @@ -68,9 +68,13 @@ def get_redirect_client_url(request): def redirect_user_first_login_or_index(request, redirect_field_name): - url = request.POST.get(redirect_field_name) - if not url: - url = request.GET.get(redirect_field_name) + sources = [request.session, request.POST, request.GET] + + url = '' + for source in sources: + url = source.get(redirect_field_name) + if url: + break if url == 'client': url = get_redirect_client_url(request)