File tree Expand file tree Collapse file tree 2 files changed +19
-0
lines changed
DjangoPlugin/tracdjangoplugin Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Original file line number Diff line number Diff 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" , "" ),
Original file line number Diff line number Diff 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
153167class DjangoDBManagementMiddlewareTestCase (SimpleTestCase ):
154168 @classmethod
You can’t perform that action at this time.
0 commit comments