35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
import logging
|
|
|
|
from django_kerberos.views import NegotiateView
|
|
|
|
from authentic2.models import AuthenticationEvent
|
|
|
|
__ALL_ = [ 'login' ]
|
|
|
|
class A2NegotiateView(NegotiateView):
|
|
def __init__(self, *args, **kwargs):
|
|
self.logger = logging.getLogger(__name__)
|
|
super(A2NegotiateView, self).__init__(*args, **kwargs)
|
|
|
|
def user_found(self, request, user, *args, **kwargs):
|
|
response = super(A2NegotiateView, self).user_found(request, user,
|
|
*args, **kwargs)
|
|
nonce = request.REQUEST.get('nonce', '')
|
|
if nonce:
|
|
self.logger.info('logged in %r as %r (nonce %r)', self.principal,
|
|
user, nonce)
|
|
else:
|
|
self.logger.info('logged in %r as %r', self.principal, user)
|
|
AuthenticationEvent.objects.create(
|
|
who=unicode(user),
|
|
how='kerberos',
|
|
nonce=nonce)
|
|
return response
|
|
|
|
def user_not_found(self, request, user, *args, **kwargs):
|
|
self.logger.debug('unable to log in %r', self.principal)
|
|
return super(A2NegotiateView, self).user_not_found(request, user,
|
|
*args, **kwargs)
|
|
|
|
login = A2NegotiateView.as_view()
|