diff options
Diffstat (limited to 'ipsilon')
-rwxr-xr-x | ipsilon/login/common.py | 6 | ||||
-rwxr-xr-x | ipsilon/root.py | 4 | ||||
-rw-r--r-- | ipsilon/unauthorized.py | 28 |
3 files changed, 35 insertions, 3 deletions
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 <pvoborni@redhat.com> +# +# 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 <http://www.gnu.org/licenses/>. + +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') |