Envoyer par mail un lien d'activation du compte utilisateur après son inscription

22 views
Skip to first unread message

MINKOUE OBAME Anouchka

unread,
Jun 17, 2019, 9:59:12 AM6/17/19
to Association Francophone des Utilisateurs de Symfony
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


jihene chaabouni

unread,
Jun 17, 2019, 10:07:15 AM6/17/19
to asso...@googlegroups.com
Bonjour,
Il y’a une bundle qui s’appelle fosuserbundle elle gère tout ça l’envoie d’email l’authentification, l’inscription .. même le mot de passe oublié tout ce qui est utilisateur.
Bon chance 

Envoyé de mon iPhone
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Association Francophone des Utilisateurs de Symfony".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse asso-afsy+...@googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/asso-afsy/999e79d3-b3f5-4a85-ad1e-97c6179e2dac%40googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

Franck Ruer

unread,
Jun 17, 2019, 10:22:42 AM6/17/19
to asso...@googlegroups.com
Bonjour,
J'ai un projet symfony qui fait ça :

Reply all
Reply to author
Forward
0 new messages