Skip to content

Commit 8e6bfd1

Browse files
committed
Render error template on finish_logout error
Previously if finish_logout() could not complete the logout, a simple HttpResponse() was returned. Render instead the djangosaml2/logout_error.html template, so implementers can override it to provide a more useful error page to users. Closes #32
1 parent 73b6a45 commit 8e6bfd1

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

djangosaml2/tests/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from djangosaml2.tests import conf
4040
from djangosaml2.tests.auth_response import auth_response
4141
from djangosaml2.signals import post_authenticated
42+
from djangosaml2.views import finish_logout
4243

4344
User = get_user_model()
4445

@@ -420,6 +421,11 @@ def test_incomplete_logout(self):
420421
})
421422
self.assertContains(response, 'Logout error', status_code=200)
422423

424+
def test_finish_logout_renders_error_template(self):
425+
request = RequestFactory().get('/bar/foo')
426+
response = finish_logout(request, None)
427+
self.assertContains(response, "<h1>Logout error</h1>", status_code=200)
428+
423429
def _test_metadata(self):
424430
settings.SAML_CONFIG = conf.create_conf(
425431
sp_host='sp.example.com',

djangosaml2/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ def finish_logout(request, response, next_page=None):
403403
return django_logout(request, next_page=next_page)
404404
else:
405405
logger.error('Unknown error during the logout')
406-
return HttpResponse('Error during logout')
406+
return render(request, "djangosaml2/logout_error.html", {})
407407

408408

409409
def metadata(request, config_loader_path=None, valid_for=None):

0 commit comments

Comments
 (0)