summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2014-01-27 18:07:33 +0100
committerPetr Vobornik <pvoborni@redhat.com>2014-02-11 18:02:39 +0100
commitcdc3e42367cf3fde8a21f31a3feb7b0dc3babe98 (patch)
tree103de92a764ff8deca7a58cb0c7d5c2a74f44f88
parentc292992e711cae987fe07e4d75e07ba9fcdf70ab (diff)
downloadipsilon-cdc3e42367cf3fde8a21f31a3feb7b0dc3babe98.tar.gz
ipsilon-cdc3e42367cf3fde8a21f31a3feb7b0dc3babe98.tar.xz
ipsilon-cdc3e42367cf3fde8a21f31a3feb7b0dc3babe98.zip
Unauthorized page
Signed-off-by: Petr Vobornik <pvoborni@redhat.com>
-rwxr-xr-xipsilon/login/common.py6
-rwxr-xr-xipsilon/root.py4
-rw-r--r--ipsilon/unauthorized.py28
-rw-r--r--templates/unauthorized.html8
4 files changed, 43 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')
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 %}
+<div class="col-sm-12">
+ <h1>401 - Unauthorized</h1>
+ <p>Authentication was not successful</p>
+ <p><a href="{{ basepath }}/login" title="Login">Try to login again</a></p>
+</div>
+{% endblock %} \ No newline at end of file