Fix login redirect if referrer is not internal to site.
This commit is contained in:
		
							parent
							
								
									d296b5bde5
								
							
						
					
					
						commit
						a7ecf445db
					
				
					 2 changed files with 4 additions and 10 deletions
				
			
		| 
						 | 
					@ -117,11 +117,9 @@ def context_found(event):
 | 
				
			||||||
        if request.session.get('referrer'):
 | 
					        if request.session.get('referrer'):
 | 
				
			||||||
            return request.session.pop('referrer')
 | 
					            return request.session.pop('referrer')
 | 
				
			||||||
        referrer = request.referrer
 | 
					        referrer = request.referrer
 | 
				
			||||||
        if not referrer or referrer == request.current_route_url():
 | 
					        if (not referrer or referrer == request.current_route_url()
 | 
				
			||||||
            if default:
 | 
					            or not referrer.startswith(request.host_url)):
 | 
				
			||||||
                referrer = default
 | 
					            referrer = default or request.route_url('home')
 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                referrer = request.route_url('home')
 | 
					 | 
				
			||||||
        return referrer
 | 
					        return referrer
 | 
				
			||||||
    request.get_referrer = get_referrer
 | 
					    request.get_referrer = get_referrer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,11 +56,7 @@ def forbidden(request):
 | 
				
			||||||
        # Store current URL in session, for smarter redirect after login.
 | 
					        # Store current URL in session, for smarter redirect after login.
 | 
				
			||||||
        request.session['next_url'] = request.current_route_url()
 | 
					        request.session['next_url'] = request.current_route_url()
 | 
				
			||||||
    request.session.flash(msg, allow_duplicate=False)
 | 
					    request.session.flash(msg, allow_duplicate=False)
 | 
				
			||||||
 | 
					    return HTTPFound(location=request.get_referrer())
 | 
				
			||||||
    url = request.referer
 | 
					 | 
				
			||||||
    if not url or url == request.current_route_url():
 | 
					 | 
				
			||||||
        url = request.route_url('home')
 | 
					 | 
				
			||||||
    return HTTPFound(location=url)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UserLogin(formencode.Schema):
 | 
					class UserLogin(formencode.Schema):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue