Bonjour
J'ai crée une fonctionnalité où les utilisateurs peuvent s'inscrire et se connecter. Lorsqu'ils s'inscrivent, leurs données sont stockées en base. Après inscription, ils peuvent se connecter.
Comment permettre aux utilisateurs d'activer leurs comptes par mail ? C'est-à-dire dès qu'ils finissent de remplir leur formulaire d'inscription, un email leur ait envoyé pour activer leur compte. Une fois ils clique sur le lien d'activation, ils pourront alors se connecter ?

Voici mon controller d'inscription, connexion et deconnexion :

<?php

namespace App\Controller;

use App\Entity\User;
use App\Form\UserType;
use App\Repository\UserRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
//use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;

/**
 * @Route("/")
 */
class SecurityController extends AbstractController
{

    /**
     * @Route("/registration", name="user_registration", methods={"GET","POST"})
     */
    public function registration(Request $request, UserPasswordEncoderInterface $encoder): Response
    {
        $user = new User();
        $form = $this->createForm(UserType::class, $user);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $entityManager = $this->getDoctrine()->getManager();

            $encoded = $encoder->encodePassword($user, $user->getPassword());

            //$encodedC = $encoder->encodePassword($user, $user->getConfirm_Password());

            $user->setPassword($encoded);
            //$user->setPassword($encodedC);

            $entityManager->persist($user);
            $entityManager->flush();

            return $this->redirectToRoute('user_login');
        }

        return $this->render('security/registration.html.twig', [
            'user' => $user,
            'form' => $form->createView(),
        ]);
    }

    /**
     * @Route("/login", name="app_login")
     */
    public function login(Request $request, AuthenticationUtils $authenticationUtils)
    {

        // get the login error if there is one
        $error = $authenticationUtils->getLastAuthenticationError();

        // last username entered by the user
        $lastUsername = $authenticationUtils->getLastUsername();

        // get the login error if there is one
        $error = $authenticationUtils->getLastAuthenticationError();

        // last username entered by the user
        $lastUsername = $authenticationUtils->getLastUsername();

        return $this->render('security/login.html.twig', [
            'last_username' => $lastUsername,
            'error'         => $error,
        ]);
    }

    /**
     * @Route("/logout", name="app_logout")
     */
    public function logout()
    {
        throw new \Exception('Will be intercepted before getting here');
    }

}

Merci

Aucune réponse