~michael.nelson/django-openid-auth/701489-fire-event-with-sreg-response

« back to all changes in this revision

Viewing changes to django_openid_auth/admin.py

Make sanitise_redirect_url map the empty string to LOGIN_REDIRECT_URL.  Fixes bug #510866.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# django-openid-auth -  OpenID integration for django.contrib.auth
2
2
#
3
3
# Copyright (C) 2008-2009 Canonical Ltd.
 
4
# Copyright (C) 2010 Dave Walker
4
5
#
5
6
# Redistribution and use in source and binary forms, with or without
6
7
# modification, are permitted provided that the following conditions
26
27
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
28
# POSSIBILITY OF SUCH DAMAGE.
28
29
 
 
30
from django.conf import settings
29
31
from django.contrib import admin
30
32
from django_openid_auth.models import Nonce, Association, UserOpenID
31
33
from django_openid_auth.store import DjangoOpenIDStore
64
66
    search_fields = ('claimed_id',)
65
67
 
66
68
admin.site.register(UserOpenID, UserOpenIDAdmin)
 
69
 
 
70
 
 
71
# Support for allowing openid authentication for /admin (django.contrib.admin)
 
72
if getattr(settings, 'OPENID_USE_AS_ADMIN_LOGIN', False):
 
73
    from django.http import HttpResponseRedirect
 
74
    from django_openid_auth import views
 
75
 
 
76
    def _openid_login(self, request, error_message='', extra_context=None):
 
77
        if request.user.is_authenticated():
 
78
            if not request.user.is_staff:
 
79
                return views.render_failure(
 
80
                    request, "User %s does not have admin access."
 
81
                    % request.user.username)
 
82
            return views.render_failure(
 
83
                request, "Unknown Error: %s" % error_message)
 
84
        else:
 
85
            # Redirect to openid login path,
 
86
            return HttpResponseRedirect(
 
87
                settings.LOGIN_URL + "?next=" + request.get_full_path())
 
88
 
 
89
    # Overide the standard admin login form.
 
90
    admin.sites.AdminSite.display_login_form = _openid_login