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 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):
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[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)
--- /dev/null
+#!/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')
--- /dev/null
+{% 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