File tree 2 files changed +19
-0
lines changed
DjangoPlugin/tracdjangoplugin
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):
121
121
raise RequestDone
122
122
123
123
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 ))
124
129
return "plainlogin.html" , {
125
130
"form" : AuthenticationForm (),
126
131
"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):
149
149
User .objects .create_user (username = "test" , password = "test" , is_active = False )
150
150
self .assertLoginFails (username = "test" , password = "test" )
151
151
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
+
152
166
153
167
class DjangoDBManagementMiddlewareTestCase (SimpleTestCase ):
154
168
@classmethod
You can’t perform that action at this time.
0 commit comments