From 4e4d0c1986ed37f6d2fc3553afce49fe700f5366 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Mon, 27 Jan 2014 18:07:33 +0100 Subject: [PATCH] Unauthorized page Signed-off-by: Petr Vobornik Reviewed-by: Simo Sorce --- ipsilon/login/common.py | 6 +++--- ipsilon/root.py | 4 ++++ ipsilon/unauthorized.py | 28 ++++++++++++++++++++++++++++ templates/unauthorized.html | 8 ++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 ipsilon/unauthorized.py create mode 100644 templates/unauthorized.html diff --git a/ipsilon/login/common.py b/ipsilon/login/common.py index 416ff31..7ff6e73 100755 --- a/ipsilon/login/common.py +++ b/ipsilon/login/common.py @@ -37,7 +37,7 @@ class LoginManagerBase(PluginObject): def auth_successful(self, username): # save ref before calling UserSession login() as it # may regenerate the session - ref = '/idp' + ref = cherrypy.config.get('base.mount', "") + '/' if 'referral' in cherrypy.session: ref = cherrypy.session['referral'] @@ -51,8 +51,8 @@ class LoginManagerBase(PluginObject): if self.next_login: return self.redirect_to_path(self.next_login.path) - # FIXME: show an error page instead - raise cherrypy.HTTPError(401) + ref = cherrypy.config.get('base.mount', "") + '/unauthorized' + raise cherrypy.HTTPRedirect(ref) class LoginPageBase(Page): diff --git a/ipsilon/root.py b/ipsilon/root.py index 034a7b3..88a15c6 100755 --- a/ipsilon/root.py +++ b/ipsilon/root.py @@ -21,6 +21,7 @@ from ipsilon.util.page import Page from ipsilon.login.common import Login from ipsilon.login.common import Logout from ipsilon.admin.common import Admin +from ipsilon.unauthorized import Unauthorized sites = dict() @@ -34,6 +35,9 @@ class Root(Page): sites[site]['template_env'] = template_env super(Root, self).__init__(sites[site]) + # set up error pages + self.unauthorized = Unauthorized(self._site) + # now set up the default login plugins self.login = Login(self._site) self.logout = Logout(self._site) diff --git a/ipsilon/unauthorized.py b/ipsilon/unauthorized.py new file mode 100644 index 0000000..52125d4 --- /dev/null +++ b/ipsilon/unauthorized.py @@ -0,0 +1,28 @@ +#!/usr/bin/python +# +# Copyright (C) 2014 Petr Vobornik +# +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from ipsilon.util.page import Page +import cherrypy + + +class Unauthorized(Page): + + def root(self): + cherrypy.response.status = "401 Unauthorized" + return self._template('unauthorized.html', title='Unauthorized') diff --git a/templates/unauthorized.html b/templates/unauthorized.html new file mode 100644 index 0000000..ee2f412 --- /dev/null +++ b/templates/unauthorized.html @@ -0,0 +1,8 @@ +{% extends "master.html" %} +{% block main %} +
+

401 - Unauthorized

+

Authentication was not successful

+

Try to login again

+
+{% endblock %} \ No newline at end of file -- 2.20.1