| 123456789101112131415161718192021222324252627282930313233 |
- import logging
- from django.contrib.auth.signals import user_login_failed
- from django.db.models.signals import post_save
- from django.dispatch import receiver
- from netbox.config import get_config
- from users.models import User, UserConfig
- from utilities.request import get_client_ip
- @receiver(user_login_failed)
- def log_user_login_failed(sender, credentials, request, **kwargs):
- logger = logging.getLogger('netbox.auth.login')
- username = credentials.get("username")
- if client_ip := get_client_ip(request):
- logger.info(f"Failed login attempt for username: {username} from {client_ip}")
- else:
- logger.warning(
- "Client IP address could not be determined for validation. Check that the HTTP server is properly "
- "configured to pass the required header(s)."
- )
- logger.info(f"Failed login attempt for username: {username}")
- @receiver(post_save, sender=User)
- def create_userconfig(instance, created, raw=False, **kwargs):
- """
- Automatically create a new UserConfig when a new User is created. Skip this if importing a user from a fixture.
- """
- if created and not raw:
- config = get_config()
- UserConfig(user=instance, data=config.DEFAULT_USER_PREFERENCES).save()
|