from django.contrib.auth.views import LoginView, LogoutView
from django.urls import reverse_lazy
from django.contrib import messages

class CustomLoginView(LoginView):
    """
    Vue de connexion. Gère l'authentification native de Django
    et route l'utilisateur vers son espace de travail selon son rôle.
    """
    template_name = 'accounts/login.html'
    redirect_authenticated_user = True # Empêche un utilisateur connecté de revoir le login
    
    def get_success_url(self):
        """Redirection conditionnelle selon le rôle métier après une connexion réussie."""
        user = self.request.user
        messages.success(self.request, f"Bienvenue {user.username} !")
        
        if user.is_admin():
            # Dette résolue : la route dashboard:home est maintenant active.
            return reverse_lazy('dashboard:home') 
        elif user.is_agent():
            # Dette résolue : la route scanner:welcome est maintenant active.
            return reverse_lazy('scanner:welcome')
            
        return reverse_lazy('vitrine:home')

class CustomLogoutView(LogoutView):
    """Déconnecte l'utilisateur et le renvoie sur la page publique."""
    next_page = reverse_lazy('vitrine:home')