forked from Hostea/dashboard
fix: auto-redirect authenticated user when visiting login page
parent
f6c89999e9
commit
96e71d7c32
|
@ -131,6 +131,32 @@ class LoginTest(TestCase):
|
||||||
self.assertEqual(resp.status_code, 302)
|
self.assertEqual(resp.status_code, 302)
|
||||||
self.assertEqual(resp.headers["location"], reverse("accounts.login"))
|
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):
|
class RegistrationTest(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
|
@ -35,6 +35,12 @@ def login_view(request):
|
||||||
"title": "Login",
|
"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":
|
if request.method == "GET":
|
||||||
ctx = default_login_ctx()
|
ctx = default_login_ctx()
|
||||||
if "next" in request.GET:
|
if "next" in request.GET:
|
||||||
|
|
Loading…
Reference in New Issue