src/Controller/RegistrationController.php line 23
<?phpnamespace App\Controller;use App\Entity\Boutiques;use App\Entity\User;use App\Form\RegistrationFormType;use App\Repository\BoutiquesRepository;use App\Repository\UserRepository;use App\Repository\VillesRepository;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Symfony\Component\Routing\Annotation\Route;use Symfony\Contracts\Translation\TranslatorInterface;class RegistrationController extends AbstractController{private UserRepository $userRepository;public function __construct(UserRepository $userRepository){$this->userRepository = $userRepository;}#[Route('/register', name: 'app_register')]public function register(Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager, BoutiquesRepository $boutiquesRepository): Response{$user = new User();$form = $this->createForm(RegistrationFormType::class, $user);$userExistError="";$formFieldErrors=[];$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {// verifions si un utilisateur existe déja avec ce mail ou ce numero de telephoneif($this->checkUserByEmail($user->getEmail()) || $this->checkUserByTelephone($user->getTelephone())){$userExistError="Email ou telephone existe déjà";$formFieldErrors[]=$form['email']->getErrors();$formFieldErrors[]=$form['telephone']->getErrors();$formFieldErrors[]=$form['nom']->getErrors();$formFieldErrors[]=$form['password']->getErrors();return $this->render('registration/register.html.twig', ['registrationForm' => $form->createView(),'userExistError'=>$userExistError,'formFieldErrors'=>$formFieldErrors,]);}// encode the plain password$user->setPassword($userPasswordHasher->hashPassword($user,$form->get('password')->getData()));$user->setIsVerified(false);$codeBoutique="";if(!empty($user->getBoutique())) {$boutique = new Boutiques();$boutique->setNom($user->getBoutique());$boutique->setVille($user->getVille());$codeBoutique = UtilsFunctions::generateRandomString(8);$boutique->setCode($codeBoutique);$boutiquesRepository->add($boutique);$entityManager->persist($boutique);$entityManager->flush();}$user->setShop($boutiquesRepository->findOneBy(["code"=>$codeBoutique]));$entityManager->persist($user);$entityManager->flush();// do anything else you need here, like send an emailreturn $this->redirectToRoute('app_vendor_home_index');}$formFieldErrors[]=$form['email']->getErrors();$formFieldErrors[]=$form['telephone']->getErrors();$formFieldErrors[]=$form['nom']->getErrors();$formFieldErrors[]=$form['password']->getErrors();return $this->render('registration/register.html.twig', ['registrationForm' => $form->createView(),'userExistError'=>$userExistError,'formFieldErrors'=>$formFieldErrors,]);}private function checkUserByEmail($email): bool{$user = $this->userRepository->findOneBy(['email' => $email ]);if($user != null)return true ;return false ;}private function checkUserByTelephone($tel): bool{$user = $this->userRepository->findOneBy(['telephone' => $tel ]);if($user != null)return true ;return false ;}}