fix: auto-redirect authenticated user when visiting login page

wip-custom-settings-list
Aravinth Manivannan 2022-06-20 17:00:25 +05:30
parent f6c89999e9
commit 96e71d7c32
Signed by: realaravinth
GPG Key ID: AD9F0F08E855ED88
2 changed files with 32 additions and 0 deletions

View File

@ -131,6 +131,32 @@ class LoginTest(TestCase):
self.assertEqual(resp.status_code, 302)
self.assertEqual(resp.headers["location"], reverse("accounts.login"))
def test_login_view_redirects_if_user_is_loggedin(self):
"""
Automatically redirect authenticated users that are visiting login view
"""
c = Client()
login_util(t=self, c=c, redirect_to="accounts.home")
resp = c.get(reverse("accounts.login"))
self.assertEqual(resp.status_code, 302)
self.assertEqual(resp.headers["location"], reverse("accounts.home"))
resp = c.post(reverse("accounts.login"))
self.assertEqual(resp.status_code, 302)
self.assertEqual(resp.headers["location"], reverse("accounts.home"))
resp = c.get(
f"{reverse('accounts.login')}?next={reverse('dash.instances.list')}"
)
self.assertEqual(resp.status_code, 302)
self.assertEqual(resp.headers["location"], reverse("dash.instances.list"))
ctx = {"next": reverse("dash.instances.list")}
resp = c.post(reverse("accounts.login"), ctx)
self.assertEqual(resp.status_code, 302)
self.assertEqual(resp.headers["location"], reverse("dash.instances.list"))
class RegistrationTest(TestCase):
def setUp(self):

View File

@ -35,6 +35,12 @@ def login_view(request):
"title": "Login",
}
if request.user.is_authenticated:
data = request.GET if request.method == "GET" else request.POST
if "next" in data:
return redirect(data["next"])
return redirect(reverse("accounts.home"))
if request.method == "GET":
ctx = default_login_ctx()
if "next" in request.GET: