summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2015-01-23 15:56:26 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2015-01-26 11:28:11 +0000
commit366ea56e9976667b506486d787633078817812d2 (patch)
tree47ecd134b383626790b8913cc4a0416d8a19c08b
parent7d39840261976a00baa124104937d0d03ee9ef17 (diff)
downloadinfrastructure-366ea56e9976667b506486d787633078817812d2.tar.gz
openid_provider: Avoid internal server error when session is lost
There's no way to recover from this, but I don't think it's an internal error.
-rw-r--r--baserock_openid_provider/openid_provider/views.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/baserock_openid_provider/openid_provider/views.py b/baserock_openid_provider/openid_provider/views.py
index 7bce3cb8..55907aaf 100644
--- a/baserock_openid_provider/openid_provider/views.py
+++ b/baserock_openid_provider/openid_provider/views.py
@@ -168,6 +168,14 @@ def openid_decide(request):
if not request.user.is_authenticated():
return landing_page(request, orequest)
+ if orequest is None:
+ # This isn't normal, but can occur if the user uses the 'back' button
+ # or if the session data is otherwise lost for some reason.
+ return error_page(
+ request, "I've lost track of your session now. Sorry! Please go "
+ "back to the site you are logging in to with a Baserock "
+ "OpenID and, if you're not yet logged in, try again.")
+
openid = openid_get_identity(request, orequest.identity)
if openid is None:
# User should only ever have one OpenID, created for them when they