diff --git a/edbob/pyramid/views/auth.py b/edbob/pyramid/views/auth.py index 11636e5..f80a4da 100644 --- a/edbob/pyramid/views/auth.py +++ b/edbob/pyramid/views/auth.py @@ -96,7 +96,17 @@ def logout(context, request): request.session.delete() request.session.invalidate() headers = forget(request) - return HTTPFound(location=request.route_url('login'), headers=headers) + + if request.params.get('referer'): + referer = request.params['referer'] + elif request.session.get('referer'): + referer = request.session.pop('referer') + else: + referer = request.referer + if not referer or referer == request.route_url('logout'): + referer = request.route_url('login') + + return HTTPFound(location=referer, headers=headers) def includeme(config):