diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2014-01-27 18:07:33 +0100 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2014-02-17 10:45:07 -0500 |
commit | 4e4d0c1986ed37f6d2fc3553afce49fe700f5366 (patch) | |
tree | a2caf2fc80021274d988f98987f5b45c77cb0b4a /ipsilon | |
parent | 739ca49e93d7bf534bfc401633a612e16ff19bc6 (diff) | |
download | ipsilon.git-4e4d0c1986ed37f6d2fc3553afce49fe700f5366.tar.gz ipsilon.git-4e4d0c1986ed37f6d2fc3553afce49fe700f5366.tar.xz ipsilon.git-4e4d0c1986ed37f6d2fc3553afce49fe700f5366.zip |
Unauthorized page
Signed-off-by: Petr Vobornik <pvoborni@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
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') |