<?php

namespace App\Security;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\Security\Http\HttpUtils;

class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface
{
    public function __construct(
        private readonly HttpUtils $httpUtils,
    ) {
    }

    public function onAuthenticationSuccess(Request $request, TokenInterface $token): Response
    {
        // Récupérer la session et ajouter un message flash
        $session = $request->getSession();
        $user = $token->getUser();
        $session->getFlashBag()->add('info', 'Bon retour ' . $user->getPseudo() . ' !');
        if ($user->hasDefaultPwd()) {
            $session->getFlashBag()->add('warning', 'Vous utilisez un mot de passe par défaut, pensez à le changer dans les paramètres de votre compte !');
        }

        // Rediriger vers le chemin cible défini (ou la page par défaut)
        if ($targetPath = $request->getSession()->get('_security.main.target_path')) {
            $request->getSession()->remove('_security.main.target_path');
            return new RedirectResponse($targetPath);
        }

        return new RedirectResponse($this->httpUtils->generateUri($request, 'app_accueil'));
    }
}

