Unauthorized page
authorPetr Vobornik <pvoborni@redhat.com>
Mon, 27 Jan 2014 17:07:33 +0000 (18:07 +0100)
committerSimo Sorce <simo@redhat.com>
Mon, 17 Feb 2014 15:45:07 +0000 (10:45 -0500)
Signed-off-by: Petr Vobornik <pvoborni@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
ipsilon/login/common.py
ipsilon/root.py
ipsilon/unauthorized.py [new file with mode: 0644]
templates/unauthorized.html [new file with mode: 0644]

index 416ff31..7ff6e73 100755 (executable)
@@ -37,7 +37,7 @@ class LoginManagerBase(PluginObject):
     def auth_successful(self, username):
         # save ref before calling UserSession login() as it
         # may regenerate the session
     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']
 
         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)
 
         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):
 
 
 class LoginPageBase(Page):
index 034a7b3..88a15c6 100755 (executable)
@@ -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.login.common import Login
 from ipsilon.login.common import Logout
 from ipsilon.admin.common import Admin
+from ipsilon.unauthorized import Unauthorized
 
 sites = dict()
 
 
 sites = dict()
 
@@ -34,6 +35,9 @@ class Root(Page):
             sites[site]['template_env'] = template_env
         super(Root, self).__init__(sites[site])
 
             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)
         # 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 (file)
index 0000000..52125d4
--- /dev/null
@@ -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 (file)
index 0000000..ee2f412
--- /dev/null
@@ -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