Skip to content

Commit d2d3f11

Browse files
committed
Fixed #204 -- Fixed broken RSS links in timeline and query pages
1 parent 75fe130 commit d2d3f11

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

Diff for: DjangoPlugin/tracdjangoplugin/plugins.py

+5
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ def process_request(self, req):
121121
raise RequestDone
122122

123123
def do_get(self, req):
124+
# Not 100% sure why, but for some links (RSS especially) Trac likes
125+
# to generate URLs pointing to `/login?referer=<the actual link>` when
126+
# the user is already authenticated.
127+
if req.is_authenticated:
128+
req.redirect(self._get_safe_redirect_url(req))
124129
return "plainlogin.html", {
125130
"form": AuthenticationForm(),
126131
"referer": req.args.get("referer", ""),

Diff for: DjangoPlugin/tracdjangoplugin/tests.py

+14
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,20 @@ def test_login_invalid_inactive_user(self):
149149
User.objects.create_user(username="test", password="test", is_active=False)
150150
self.assertLoginFails(username="test", password="test")
151151

152+
def test_login_page_redirects_if_already_logged_in(self):
153+
self.env.config.set("trac", "base_url", "")
154+
request = self.request_factory(
155+
method="GET",
156+
path_info="/login",
157+
args={"referer": "/test"},
158+
authname="admin",
159+
)
160+
161+
with self.assertRaises(RequestDone):
162+
self.component.process_request(request)
163+
164+
self.assertEqual(request.headers_sent["Location"], "/test")
165+
152166

153167
class DjangoDBManagementMiddlewareTestCase(SimpleTestCase):
154168
@classmethod

0 commit comments

Comments
 (0)