users/signals.py

39 lines
1.2 KiB
Python
Raw Normal View History

2020-01-26 20:47:33 +01:00
import logging
2024-10-08 22:31:19 +02:00
from django.conf import settings
2020-01-26 20:47:33 +01:00
from django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed
from django.dispatch import receiver
2024-10-08 22:31:19 +02:00
logger = logging.getLogger(settings.ROOT_LOGGER_NAME).getChild(__name__)
2020-01-26 20:47:33 +01:00
@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('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')
2020-01-26 20:47:33 +01:00
2021-01-21 18:53:55 +01:00
logger.info('Accepted password for {user} from {ip}'.format(
2020-01-26 20:47:33 +01:00
user=user,
ip=ip
))
@receiver(user_logged_out)
def user_logged_out_callback(sender, request, user, **kwargs):
ip = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')
2020-01-26 20:47:33 +01:00
2021-01-21 18:53:55 +01:00
logger.debug('Disconnected from user {user} {ip}'.format(
2020-01-26 20:47:33 +01:00
user=user,
ip=ip
))
@receiver(user_login_failed)
def user_login_failed_callback(sender, request, credentials, **kwargs):
ip = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')
2020-01-26 20:47:33 +01:00
2021-01-21 18:53:55 +01:00
logger.warning('Failed password for {user} from {ip}'.format(
2020-01-26 20:47:33 +01:00
user=credentials.get('username'),
ip=ip
))