src/Controller/RegistrationController.php line 153

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\RegistrationFormType;
  5. use App\Security\EmailVerifier;
  6. use App\Security\AppCustomAuthenticator;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  12. use Symfony\Component\Security\Guard\GuardAuthenticatorHandler;
  13. use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface;
  14. use App\Utils\UserManageHelper;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use App\Repository\UserRepository;
  17. use App\Utils\MailSpool;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. use App\Utils\LtsUtils;
  20. use App\Command\ExecuteCommand;
  21. use App\Entity\AdminUser;
  22. use Doctrine\ORM\EntityManagerInterface;
  23. use App\Entity\TcUserType;
  24. use App\Utils\ManageLog;
  25. use App\Entity\CompanyUser;
  26. use App\Repository\CompanyRepository;
  27. use App\Repository\InviteUserRepository;
  28. use Symfony\Component\Uid\Ulid;
  29. use App\Entity\Company;
  30. use App\Entity\CompanySettings;
  31. use App\Entity\InviteUser;
  32. class RegistrationController extends AbstractController 
  33. {
  34.     private $emailVerifier;
  35.     private $userRepository;
  36.     private $mailSpool;
  37.     private $ltsUtils;
  38.     private $executeCommand;  
  39.     private $manageLog;
  40.     private $translator;
  41.     private $em;
  42.     private $contact;
  43.     private $CompanyRepository;
  44.     private $InviteUserRepository;
  45.     public function __construct(EntityManagerInterface $em,EmailVerifier $emailVerifierUserRepository $userRepository,MailSpool $mailSpool,TranslatorInterface $trans,LtsUtils $ltsUtils,ExecuteCommand $executeCommand,ManageLog $manageLog\Symfony\Component\DependencyInjection\ContainerInterface $containerCompanyRepository $CompanyRepository,InviteUserRepository $InviteUserRepository
  46.     {
  47.         $this->emailVerifier $emailVerifier;
  48.         $this->userRepository $userRepository;
  49.         $this->mailSpool $mailSpool;
  50.         $this->ltsUtils $ltsUtils;
  51.         $this->translator $trans;
  52.         $this->executeCommand $executeCommand;
  53.         $this->em $em;
  54.         $this->container $container;
  55.         $this->manageLog $manageLog;
  56.         $this->CompanyRepository $CompanyRepository;
  57.         $this->InviteUserRepository $InviteUserRepository;
  58.     }
  59.     /**
  60.      * @Route("/register", name="app_register")
  61.      */
  62.     public function register(Request $requestUserPasswordEncoderInterface $passwordEncoderGuardAuthenticatorHandler $guardHandlerAppCustomAuthenticator $authenticatorUserManageHelper $userManageHelper): Response 
  63.     {
  64.         $role '';
  65.         $user = new User();
  66.         $details = array();
  67.         $tmp_roles = array();
  68.         $form $this->createForm(RegistrationFormType::class, $user); 
  69.         $form->handleRequest($request);
  70.         if ($form->isSubmitted() && $form->isValid()){
  71.             $details['first_name'] = $request->get('first_name');
  72.             $details['surname'] = $request->get('surname');
  73.             $details['phone_number'] = $request->get('phone_number');
  74.             $details['company_name'] = $request->get('company_name');
  75.             $details['company_address_1'] = $request->get('company_address_1');
  76.             $details['company_address_2'] = $request->get('company_address_2');
  77.             $details['town'] = $request->get('town');
  78.             $details['country'] = $request->get('country');
  79.             $details['postcode'] = $request->get('postcode');
  80.             $details['company_phone'] = $request->get('company_phone');
  81.             $details['email'] = $form->get('email')->getData();
  82.             $details['password'] = $passwordEncoder->encodePassword(
  83.                     $user,
  84.                     $form->get('plainPassword')->getData()
  85.             );
  86.             if ($request->get('user_type') == '') {
  87.                 $tmp_roles[] = 'ROLE_USER';
  88.             } else {
  89.                 $tmp_roles[] = $request->get('user_type');
  90.             }
  91.             $details['roles'] = $tmp_roles;
  92.             $details['isVerified'] = '0';
  93.             $details['request'] = $request;
  94.             $userManageHelper->createUser($details);
  95.         }
  96.         if ($this->getUser()){
  97.             $roles $this->getUser()->getRoles();
  98.             if ($roles[0] === 'ROLE_ADMIN') {
  99.                 $role $this->getUser()->getRoles();
  100.             }
  101.         }
  102.         return $this->render('registration/register.html.twig', [
  103.                     'registrationForm' => $form->createView(),
  104.                     'role' => $role,
  105.         ]);
  106.     }
  107.     
  108.     /**
  109.      * @Route("/verify/email", name="app_verify_email")
  110.      */
  111.     public function verifyUserEmail(Request $request): Response {
  112.             try {
  113.                 $this->emailVerifier->handleEmailConfirmation($request);
  114.             } catch (VerifyEmailExceptionInterface $exception) {
  115.         
  116.                 $this->addFlash('verify_email_error'$exception->getReason());
  117.                 print_r($exception->getReason());
  118.     
  119.                 return $this->redirectToRoute('app_login');
  120.             }
  121.     
  122.             $this->addFlash('success''Your email address has been verified.');
  123.     
  124.             return $this->redirectToRoute('app_login');
  125.         }
  126.     /**
  127.      * @Route("/verify-api", name="app_api_verify_email")
  128.      */
  129.     public function verifyApiUserEmail(Request $request): Response
  130.     {
  131.         try {
  132.             $this->emailVerifier->handleEmailConfirmation($request);
  133.         } catch (VerifyEmailExceptionInterface $exception) {
  134.             $this->addFlash('verify_email_error'$exception->getReason());
  135.             print_r($exception->getReason());
  136.             return $this->redirectToRoute('app_set_new_password',['id' => convert_uuencode($request->get('id'))]);
  137.         }
  138.         $this->addFlash('success''Your email address has been verified.');
  139.         return $this->redirectToRoute('app_set_new_password',['id' => convert_uuencode($request->get('id'))]);
  140.     }        
  141.     /**
  142.      * @Route("/signup/{companyId}", name="app_registration_page")
  143.      * sign up page view
  144.      * @param $companyId
  145.      * @return 
  146.      */
  147.     public function signUp($companyId=null,$inviteId =null)
  148.     {
  149.         $params['company_id'] = $companyId;
  150.         $params['inviteId'] = $inviteId;
  151.         $companyDetails $this->em->getRepository(Company::class)->getCompanyDetails($companyId);
  152.         $inviteUserDetails $this->em->getRepository(InviteUser::class)->getInviteUserDetails($inviteId);
  153.         $data =[];
  154.         if($companyDetails) {
  155.             $data['companyId'] = $companyDetails['id'];
  156.             $data['companyName'] = $companyDetails['companyTitle'];
  157.         }
  158.         if($inviteUserDetails) {
  159.             // Restriction for user create according to plans
  160.             $noOfUsers $this->em->getRepository(CompanySettings::class)->getDefaultUserByCompanyId($companyId);
  161.             $userCount $this->em->getRepository(CompanyUser::class)->getUserCountByCompanyId($companyId);
  162.             $data['userLimit'] = ($noOfUsers <=  $userCount) ? true false;
  163.             
  164.             $data['emailId'] = $inviteUserDetails['emailId'];
  165.             $data['inviteId'] = $inviteId;
  166.             $data['userTypeId'] = $inviteUserDetails['role'];
  167.         }
  168.         return $this->render('security/signup.html.twig'$data);
  169.     }
  170. }