from django.db.models.signals import post_save
from django.dispatch import receiver

from apps.core.authentication.models import CustomUser, UserProfile
from apps.core.permissions.access import sync_user_role_group


@receiver(post_save, sender=CustomUser)
def ensure_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.get_or_create(user=instance)


@receiver(post_save, sender=CustomUser)
def sync_user_to_role_group(sender, instance, **kwargs):
    """Keep Django Group (named like UserRole) aligned with `user.role`."""
    sync_user_role_group(instance)
