from django.conf import settings from django.contrib import admin from django.contrib.auth.views import redirect_to_login from django.core.exceptions import PermissionDenied # Support for allowing social_auth authentication for /admin (django.contrib.admin) if getattr(settings, 'SOCIAL_AUTH_USE_AS_ADMIN_LOGIN', False): def _social_auth_login(self, request, **kwargs): if request.user.is_authenticated(): if not request.user.is_active or not request.user.is_staff: raise PermissionDenied() else: return redirect_to_login(request.get_full_path()) # Overide the standard admin login form. admin.sites.AdminSite.login = _social_auth_login