38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
|
import logging
|
||
|
from django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed
|
||
|
from django.dispatch import receiver
|
||
|
|
||
|
log = logging.getLogger('AUTH')
|
||
|
|
||
|
|
||
|
@receiver(user_logged_in)
|
||
|
def user_logged_in_callback(sender, request, user, **kwargs):
|
||
|
# to cover more complex cases:
|
||
|
# http://stackoverflow.com/questions/4581789/how-do-i-get-user-ip-address-in-django
|
||
|
ip = request.META.get('REMOTE_ADDR')
|
||
|
|
||
|
log.info('Accepted password for {user} from {ip}'.format(
|
||
|
user=user,
|
||
|
ip=ip
|
||
|
))
|
||
|
|
||
|
|
||
|
@receiver(user_logged_out)
|
||
|
def user_logged_out_callback(sender, request, user, **kwargs):
|
||
|
ip = request.META.get('REMOTE_ADDR')
|
||
|
|
||
|
log.debug('Disconnected from user {user} {ip}'.format(
|
||
|
user=user,
|
||
|
ip=ip
|
||
|
))
|
||
|
|
||
|
|
||
|
@receiver(user_login_failed)
|
||
|
def user_login_failed_callback(sender, request, credentials, **kwargs):
|
||
|
ip = request.META.get('REMOTE_ADDR')
|
||
|
|
||
|
log.warning('Failed password for {user} from {ip}'.format(
|
||
|
user=credentials.get('username'),
|
||
|
ip=ip
|
||
|
))
|