src/Controller/AccountController.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\Security\Core\Security;
  10. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  11. use App\Repository\UserRepository;
  12. use App\Form\AccountEditForm;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use App\Form\ChangePasswordForm;
  15. use Symfony\Component\Form\FormError;
  16. #[Route('/account')]
  17. class AccountController extends AbstractController
  18. {
  19.     #[Route('/'methods: ['GET'], name'account_index')]
  20.     #[Cache(smaxage10)]
  21.     public function index(Request $request,EntityManagerInterface $entityManager,UserRepository $usersRepository): Response
  22.     {
  23.         $userData $entityManager->getRepository(\App\Entity\UserProfiles::class)->find($this->getUser()->getUserId());
  24.        
  25.         $phoneNumber $userData->getPhone() ? $userData->getPhone() : '';
  26.    
  27.         
  28.         return $this->render('account/index.html.twig', [
  29.             'user' => $this->getUser(),
  30.             'phoneNumber' => $phoneNumber,
  31.         ]);
  32.     }
  33.     #[Route('/edit'name'account_edit'methods: ['POST','GET'])]
  34.     public function edit(Request $requestEntityManagerInterface $entityManagerUserRepository $usersRepository): Response
  35.     {
  36.         $userProfileData $entityManager->getRepository(\App\Entity\UserProfiles::class)->find($this->getUser()->getUserId());
  37.         $formData['name'] = $this->getUser()->getName();
  38.         $formData['email'] = $this->getUser()->getEmail();
  39.         $formData['phoneNumber'] = $userProfileData->getPhone();
  40.         $form $this->createForm(AccountEditForm::class, $formData);
  41.         $form->handleRequest($request);
  42.         if ($form->isSubmitted() && $form->isValid()) {
  43.             $name $form->get('name')->getData();
  44.             $email $form->get('email')->getData();
  45.             $phoneNumber $form->get('phoneNumber')->getData();
  46.             $userIfExists $usersRepository->loadUserByEmailIdentifier($email$this->getUser()->getUserId());
  47.             if(!$userIfExists){
  48.                 $userData $entityManager->getRepository(\App\Entity\User::class)->find($this->getUser()->getUserId());
  49.                 $userProfileData $entityManager->getRepository(\App\Entity\UserProfiles::class)->find($this->getUser()->getUserId());
  50.                 if($userData && $userProfileData){
  51.                     $userData->setName($name);
  52.                     $userData->setEmail($email);
  53.                     $userProfileData->setPhone($phoneNumber);
  54.                     $entityManager->persist($userData);
  55.                     $entityManager->persist($userProfileData);
  56.                     $entityManager->flush();
  57.                 }
  58.                 $this->addFlash('success''Update successfully.');
  59.                 return $this->redirectToRoute('account_index', [], Response::HTTP_SEE_OTHER);
  60.             }
  61.         }
  62.         return $this->renderForm('account/edit.html.twig', [
  63.             'user' => $this->getUser(),
  64.             'form' => $form,
  65.         ]);
  66.     }
  67.     #[Route('/email-verify'name'account_verify_email'methods: ['GET'])]
  68.     public function verifyEmail(Request $requestEntityManagerInterface $entityManagerUserRepository $usersRepository): Response
  69.     {
  70.         $userEmailExists true;
  71.         $params $request->query->all();
  72.         if(isset($params['email'])){
  73.             $userIfExists $usersRepository->loadUserByEmailIdentifier($params['email'], $this->getUser()->getUserId());
  74.             if($userIfExists){
  75.                 $userEmailExists true;
  76.             }else{
  77.                 $userEmailExists false;
  78.             }
  79.         }
  80.         return new JsonResponse(array('user_email_exists' => $userEmailExists));
  81.     }
  82.     #[Route('/change-password'name'admin_change_password'methods: ['POST','GET'])]
  83.     public function changePassword(Request $requestEntityManagerInterface $entityManagerUserRepository $usersRepositoryUserPasswordHasherInterface $passwordHasher): Response
  84.     {
  85.         $user $this->getUser();
  86.         if(!$user) {
  87.             throw $this->createNotFoundException('No user found for id ' $user->getUserId());
  88.         }
  89.         $form $this->createForm(ChangePasswordForm::class);
  90.         $form->handleRequest($request);
  91.         
  92.         if ($form->isSubmitted()) {
  93.             $planPasswordLength strlen($form->get('newpassword')->getData());
  94.          /*   if(empty($planPasswordLength)) {
  95.                 $form->get('newpassword')->addError(new FormError('Password cannot be blank'));
  96.             }
  97.              elseif($planPasswordLength < 6) {
  98.                 $form->get('newpassword')->addError(new FormError('Your Password must be at least 6 characters length'));
  99.             }
  100.             elseif($planPasswordLength > 120) {
  101.                 $form->get('newpassword')->addError(new FormError('Your Password must not exceed 120 characters'));
  102.             } */
  103.             
  104.         }
  105.         if ($form->isSubmitted() && $form->isValid()) {
  106.             $plainPassword $form->get('newpassword')->getData();
  107.             $password $passwordHasher->hashPassword($user$plainPassword);
  108.             $user->setPassword($password);
  109.             $entityManager->persist($user);
  110.             $entityManager->flush();
  111.             return $this->redirectToRoute('account_index');
  112.         }
  113.         return $this->renderForm('account/change-password.html.twig', [
  114.             'user' => $this->getUser(),
  115.             'form' => $form,
  116.         ]);
  117.     }
  118. }