diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-01-23 15:56:26 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-01-26 11:28:11 +0000 |
commit | 366ea56e9976667b506486d787633078817812d2 (patch) | |
tree | 47ecd134b383626790b8913cc4a0416d8a19c08b | |
parent | 7d39840261976a00baa124104937d0d03ee9ef17 (diff) | |
download | infrastructure-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.py | 8 |
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 |