from django.contrib.auth.backends import BaseBackend
from django.contrib.auth import get_user_model

User = get_user_model()

class ExternalUserAuthBackend(BaseBackend):
    """
    Autoryzacja przez zewnętrzny system — po external_user_id, emailu albo przez API.
    """
    def authenticate(self, request, external_user_id=None, **kwargs):
        # Możesz pobrać z requesta token JWT, zrobić zapytanie do innego serwisu itp.
        # Przykład: autoryzacja na podstawie external_user_id
        if external_user_id:
            try:
                # Jeśli chcesz tylko mapować user_id z zewnętrznego systemu na lokalny user model:
                return User.objects.get(external_user_id=external_user_id)
            except User.DoesNotExist:
                # Możesz utworzyć usera automatycznie jeśli nie istnieje
                return None
        return None

    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None
