From fe50fd3423969fca640cc35b32678bab5fd491cb Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 10 Oct 2014 13:34:00 -0400 Subject: Handle invalid/expired transactions gracefully Return a useful error page every time and invalid or expired transaction is requested, instead of ending up with an internal backtrace and an ugly 500 error. Signed-off-by: Simo Sorce Reviewed-by: Patrick Uiterwijk --- ipsilon/util/page.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'ipsilon/util') diff --git a/ipsilon/util/page.py b/ipsilon/util/page.py index f98b2d9..213f945 100755 --- a/ipsilon/util/page.py +++ b/ipsilon/util/page.py @@ -19,6 +19,7 @@ from ipsilon.util.log import Log from ipsilon.util.user import UserSession +from ipsilon.util.trans import Transaction from urllib import unquote import cherrypy @@ -113,4 +114,11 @@ class Page(Log): def del_subtree(self, name): del self.__dict__[name] + def get_valid_transaction(self, provider, **kwargs): + try: + return Transaction(provider, **kwargs) + except ValueError: + msg = 'Transaction expired, or cookies not available' + raise cherrypy.HTTPError(401, msg) + exposed = True -- cgit