src/Controller/RegistrationController.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\SkiClub;
  4. use App\Entity\SkiUser;
  5. use App\Entity\User;
  6. use App\Form\RegistrationFormType;
  7. use App\Repository\UserRepository;
  8. use App\Service\MailService;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Doctrine\ORM\EntityRepository;
  11. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextType;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Mailer\MailerInterface;
  18. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use SymfonyCasts\Bundle\VerifyEmail\VerifyEmailHelperInterface;
  21. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  22. class RegistrationController extends AbstractController
  23. {
  24.     /**
  25.      * @var EntityManagerInterface
  26.      */
  27.     private $entityManager;
  28.     /**
  29.      * ProductController constructor.
  30.      *
  31.      * @param EntityManagerInterface $entityManager
  32.      */
  33.     public function __construct(EntityManagerInterface $entityManager)
  34.     {
  35.         $this->entityManager $entityManager;
  36.     }
  37.     #[Route('/registrierung'name'register')]
  38.     public function registrieren(Request $requestUserRepository $userRepositoryUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManagerUserAuthenticatorInterface $authenticatorVerifyEmailHelperInterface $helperMailerInterface $mailer): Response
  39.     {
  40.         $user = new User();
  41.         $form $this->createForm(RegistrationFormType::class, $user);
  42.         $form->remove('roles');
  43.         $form->remove('iban');
  44.         $form->remove('bic');
  45.         $form->remove('bank');
  46.         $form->remove('accountOwner');
  47.         $form->add('skiClub'EntityType::class, [
  48.             'class' => SkiClub::class,
  49.             'placeholder' => '===Skiclub auswählen===',
  50.             'label' => false,
  51.             'mapped' => false,
  52. //            'choice_label' => 'nameandtag',
  53.             'attr' => [
  54.                 'class' => 'select',
  55.                 'data-mdb-filter' => 'true',
  56.             ]
  57.         ]);
  58.         if ($user->getBirthDate() != null) {
  59.             $form->get('birthDate')->setData($user->getBirthDate()->format('d/m/Y'));
  60.         }
  61.         $form->handleRequest($request);
  62.         if ($form->isSubmitted() && $form->isValid()) {
  63.             if ($form->get('Registrieren')->isClicked()) {
  64.                 $mails = new MailService($helper$mailer$entityManager);
  65.             }
  66.             $member $form->get('member')->getData();
  67.             $skiClub $form->get('skiClub')->getData();
  68.             $birthDate $form->get('birthDate')->getData();
  69.             if ($birthDate != null) {
  70.                 $user->setBirthDate(date_create_from_format('d/m/Y'$birthDate));
  71.             }
  72.             // encode the plain password
  73.             $user->setRoles([]);
  74.             $user->setIsVerified(true);
  75.             $user->setPassword(
  76.                 $userPasswordHasher->hashPassword(
  77.                     $user,
  78.                     $form->get('plainPassword')->getData()
  79.                 )
  80.             );
  81.             $skiclubUser = new SkiUser();
  82.             $skiclubUser->setUser($user);
  83.             $skiclubUser->setSkiClub($skiClub);
  84.             if ($member == true) {
  85.                 $skiclubUser->setMembershipNumber("vorläufig");
  86.                 $skiclubUser->setEntryDate((new \DateTime()));
  87.             }
  88.             $admin $userRepository->findByExampleAdmin($skiClub);
  89.             $mails->newRegistrationNotification($admin$user);
  90.             $entityManager->persist($user);
  91.             $entityManager->persist($skiclubUser);
  92.             $entityManager->flush();
  93.             $this->addFlash('success''Sie können sich nun Einloggen ');
  94.             return $this->redirectToRoute('login');
  95.         }
  96.         return $this->render('registration/register.html.twig', ['registrationForm' => $form->createView(), 'skiclub' => true,]);
  97.     }
  98.     #[Route('/registrierung/{id}'name'app_register')]
  99.     public function register(Request $requestSkiClub $skiClubUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManagerUserAuthenticatorInterface $authenticator): Response
  100.     {
  101.         $user = new User();
  102.         $form $this->createForm(RegistrationFormType::class, $user);
  103.         $form->remove('roles');
  104.         $form->remove('iban');
  105.         $form->remove('bic');
  106.         $form->remove('bank');
  107.         $form->remove('accountOwner');
  108.         $form->remove('skiclub');
  109.         if ($user->getBirthDate() != null) {
  110.             $form->get('birthDate')->setData($user->getBirthDate()->format('d/m/Y'));
  111.         }
  112.         $form->handleRequest($request);
  113.         if ($form->isSubmitted() && $form->isValid()) {
  114.             $member $form->get('member')->getData();
  115.             $birthDate $form->get('birthDate')->getData();
  116.             if ($birthDate != null) {
  117.                 $user->setBirthDate(date_create_from_format('d/m/Y'$birthDate));
  118.             }
  119.             // encode the plain password
  120.             $user->setRoles([]);
  121.             $user->setIsVerified(true);
  122.             $user->setPassword(
  123.                 $userPasswordHasher->hashPassword(
  124.                     $user,
  125.                     $form->get('plainPassword')->getData()
  126.                 )
  127.             );
  128.             $skiclubUser = new SkiUser();
  129.             $skiclubUser->setUser($user);
  130.             $skiclubUser->setSkiClub($skiClub);
  131.             if ($member == true) {
  132.                 $skiclubUser->setMembershipNumber("vorläufig");
  133.                 $skiclubUser->setEntryDate((new \DateTime()));
  134.             }
  135.             $entityManager->persist($user);
  136.             $entityManager->persist($skiclubUser);
  137.             $entityManager->flush();
  138.             $this->addFlash('success''Sie können sich nun Einloggen ');
  139.             return $this->redirectToRoute('login');
  140.         }
  141.         return $this->render('registration/register.html.twig', ['registrationForm' => $form->createView(), 'skiclub' => false,]);
  142.     }
  143.     #[Route('/skiclub/{id}/registrierung/admin/'name'admin.registration')]
  144.     public function registerAdmin(Request $requestSkiClub $skiClubUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManagerVerifyEmailHelperInterface $helperMailerInterface $mailerUserRepository $userRepository): Response
  145.     {
  146.         if (!($this->isGranted('ROLE_ADMIN') or $this->isGranted('ROLE_SKI_ADMIN'))) {
  147.             $this->addFlash('danger''Kein Zugriff');
  148.             return $this->redirectToRoute('index');
  149.         }
  150.         $user = new User();
  151.         $form $this->createForm(RegistrationFormType::class, $user);
  152.         $form->remove('iban');
  153.         $form->remove('bic');
  154.         $form->remove('bank');
  155.         $form->remove('agreeTerms');
  156.         $form->remove('accountOwner');
  157.         $form->remove('member');
  158.         if ($this->isGranted('ROLE_SKI_ADMIN')) {
  159.             $form->add('roles'ChoiceType::class, [
  160.                 'required' => true,
  161.                 'multiple' => false,
  162.                 'expanded' => false,
  163.                 'mapped' => false,
  164.                 'choices' => [
  165.                     'Standardnutzer' => 'ROLE_USER',
  166.                     'Freizeitleiter' => 'ROLE_FREIZEITLEITER',
  167.                     'Betreuer' => 'ROLE_BETREUER',
  168.                     'Skiclub Admin' => 'ROLE_SKI_ADMIN',
  169.                 ],
  170.             ]);
  171.         }
  172.         if ($this->isGranted('ROLE_ADMIN')) {
  173.             $form->add('roles'ChoiceType::class, [
  174.                 'required' => true,
  175.                 'multiple' => false,
  176.                 'expanded' => false,
  177.                 'mapped' => false,
  178.                 'choices' => [
  179.                     'Admin' => 'ROLE_SKI_ADMIN',
  180.                 ],
  181.             ]);
  182.         }
  183.         $form->remove("skiClub");
  184.         $form->remove('plainPassword');
  185.         if ($user->getBirthDate() != null) {
  186.             $form->get('birthDate')->setData($user->getBirthDate()->format('d/m/Y'));
  187.         }
  188.         $form->handleRequest($request);
  189.         if ($form->get('Registrieren')->isClicked()) {
  190.             $mails = new MailService($helper$mailer$entityManager);
  191.         }
  192.         $mail $user->getEmail();
  193.         $firstname $user->getFirstName();
  194.         $lastname $user->getLastName();
  195.         // dd($userRepository->findByExampleField($mail, $firstname, $lastname));
  196.         if ($userRepository->findByExampleField($mail$firstname$lastname)) {
  197.             $mails->regestrierungVonAdmin($user$skiClub);
  198.             return $this->redirectToRoute('index');
  199.         } else {
  200.             if ($form->isSubmitted() && $form->isValid()) {
  201.                 $mail $user->getEmail();
  202.                 $firstname $user->getFirstName();
  203.                 $lastname $user->getLastName();
  204.                 if ($form->get('Registrieren')->isClicked()) {
  205.                     $mailService = new MailService($helper$mailer$entityManager);
  206.                 }
  207.                 $roles $form->get('roles')->getData();
  208.                 $birthDate $form->get('birthDate')->getData();
  209.                 // dd($form->get('email')->getData());
  210.                 if ($birthDate != null) {
  211.                     $user->setBirthDate(date_create_from_format('d/m/Y'$birthDate));
  212.                 }
  213.                 if ($roles == 'ROLE_SKI_ADMIN' or $roles == 'ROLE_BETREUER' or $roles == 'ROLE_FREIZEITLEITER') {
  214.                     $user->setRoles([$roles]);
  215.                     $user->setSkiClubId($skiClub->getId());
  216.                 } else {
  217.                     $user->setRoles([$roles]);
  218.                 }
  219.                 $passwordPlain substr(md5(time()), 010); // zufälliges 10-stelliges Passwort
  220.                 $user->setIsVerified(true);
  221.                 $user->setPassword(
  222.                     $userPasswordHasher->hashPassword(
  223.                         $user,
  224.                         $passwordPlain
  225.                     )
  226.                 );
  227.                 $skiclubUser = new SkiUser();
  228.                 $skiclubUser->setUser($user);
  229.                 $skiclubUser->setSkiClub($skiClub);
  230.                 $skiclubUser->setIsVerified(true);
  231.                 $entityManager->persist($user);
  232.                 $entityManager->persist($skiclubUser);
  233.                 $entityManager->flush();
  234.                 $this->addFlash('success''Neuer Nutzer wurde erfolgreich angelegt');
  235.                 $mailService->neuRegistrierterAccount($user$skiClub$passwordPlain);
  236.                 if ($this->getUser()->getHighestRole() == 'ROLE_Admin') {
  237.                     return $this->redirectToRoute('view_all_skiclubs');
  238.                 } else {
  239.                     return $this->redirectToRoute('index');
  240.                 }
  241.             }
  242.         }
  243.         return $this->render('registration/adminRegister.html.twig', [
  244.             'registrationForm' => $form->createView(),
  245.         ]);
  246.     }
  247.     #[Route('/admin/skiclub/{id}/registrierung/hauptnutzer/{users}'name'mainUser.registration')]
  248.     public function registerAdminSubUser(Request $requestUser $usersSkiClub $skiClubUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManagerVerifyEmailHelperInterface $helperMailerInterface $mailer,): Response
  249.     {
  250.         if (!$this->isGranted('ROLE_SKI_ADMIN') or $this->isGranted('ROLE_SKI_ADMIN') and $this->getUser()->getSkiClubId() != $skiClub->getId()) {
  251.             $this->addFlash('danger''Kein Zugriff');
  252.             return $this->redirectToRoute('index');
  253.         }
  254.         $user = new User();
  255.         $form $this->createForm(RegistrationFormType::class, $user);
  256.         $form->remove("skiClub");
  257.         $form->remove("plainPassword");
  258.         $form->remove("email");
  259.         $form->remove('iban');
  260.         $form->remove('roles');
  261.         $form->remove('bic');
  262.         $form->remove('bank');
  263.         $form->remove('agreeTerms');
  264.         $form->remove('accountOwner');
  265.         $form->remove('member');
  266.         if ($user->getBirthDate() != null) {
  267.             $form->get('birthDate')->setData($user->getBirthDate()->format('d/m/Y'));
  268.         }
  269.         $form->handleRequest($request);
  270.         if ($form->isSubmitted() && $form->isValid()) {
  271.             if ($form->get('Registrieren')->isClicked()) {
  272.                 $mailService = new MailService($helper$mailer$entityManager);
  273.             }
  274.             $birthDate $form->get('birthDate')->getData();
  275.             $user->setMainUser($users);
  276.             $user->setIsVerified(true);
  277.             if ($birthDate != null) {
  278.                 $user->setBirthDate(date_create_from_format('d/m/Y'$birthDate));
  279.             }
  280.             $user->setRoles(['ROLE_USER']);
  281.             $skiclubUser = new SkiUser();
  282.             $skiclubUser->setUser($user);
  283.             $skiclubUser->setSkiClub($skiClub);
  284.             $skiclubUser->setIsVerified(true);
  285.             $entityManager->persist($user);
  286.             $entityManager->persist($skiclubUser);
  287.             $entityManager->flush();
  288.             $this->addFlash('success''Neuer Nutzer wurde erfolgreich angelegt');
  289.             $mailService->regestrierungSubUser($user$skiClub);
  290.             return $this->redirectToRoute('view_user', ['id' => $users->getId()]);
  291.         }
  292.         return $this->render('registration/index.html.twig', [
  293.             'registrationForm' => $form->createView(),
  294.             'isUser' => false,
  295.         ]);
  296.     }
  297.     #[Route('/skiclub/{id}/registrierung/nutzer/{users}'name'subUser.registration')]
  298.     public function registerSubUser(UserRepository $userRepositoryRequest $requestUser $usersSkiClub $skiClubUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManagerVerifyEmailHelperInterface $helperMailerInterface $mailer): Response
  299.     {
  300.         if ($this->getUser() == $users) {
  301.             $isUser true;
  302.         }
  303.         if ($this->getUser() != $users) {
  304.             $this->addFlash('danger''Kein Zugriff');
  305.             return $this->redirectToRoute('index');
  306.         }
  307.         $user = new User();
  308.         $form $this->createForm(RegistrationFormType::class, $user);
  309.         $form->remove("skiClub");
  310.         $form->remove("plainPassword");
  311.         $form->remove("email");
  312.         $form->remove('iban');
  313.         $form->remove('roles');
  314.         $form->remove('bic');
  315.         $form->remove('bank');
  316.         $form->remove('agreeTerms');
  317.         $form->remove('accountOwner');
  318.         $form->handleRequest($request);
  319.         if ($form->isSubmitted() && $form->isValid()) {
  320.             if ($form->get('Registrieren')->isClicked()) {
  321.                 $mailService = new MailService($helper$mailer$entityManager);
  322.             }
  323.             $birthDate $form->get('birthDate')->getData();
  324.             $member $form->get('member')->getData();
  325.             $user->setMainUser($users);
  326.             $user->setIsVerified(true);
  327.             if ($birthDate != null) {
  328.                 $user->setBirthDate(date_create_from_format('d/m/Y'$birthDate));
  329.             }
  330.             $user->setRoles(['ROLE_USER']);
  331.             $skiclubUser = new SkiUser();
  332.             $skiclubUser->setUser($user);
  333.             if ($member == true) {
  334.                 $skiclubUser->setMembershipNumber("vorläufig");
  335.                 $skiclubUser->setEntryDate((new \DateTime()));
  336.             }
  337.             $skiclubUser->setSkiClub($skiClub);
  338.             $entityManager->persist($user);
  339.             $entityManager->persist($skiclubUser);
  340.             $entityManager->flush();
  341.             $this->addFlash('success''Neuer Nutzer wurde erfolgreich angelegt, der Adminestrator muss diesen noch zulassen');
  342.             $admin $userRepository->findByExampleAdmin($skiClub);
  343.             $mailService->newRegistrationNotification($admin$user);
  344.             $mailService->regestrierungSubUser($user$skiClub);
  345.             return $this->redirectToRoute('view_user', ['id' => $users->getId()]);
  346.         }
  347.         return $this->render('registration/index.html.twig', [
  348.             'registrationForm' => $form->createView(),
  349.             'isUser' => $isUser,
  350.         ]);
  351.     }
  352. //    #[Route('/skiclub/registration/mainUser/{users}', name: 'sub.registration')]
  353. //    public function addSubUser(Request $request, User $users, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager, VerifyEmailHelperInterface $helper, MailerInterface $mailer,): Response
  354. //    {
  355. //
  356. //        $user = new User();
  357. //
  358. //
  359. //        $form = $this->createForm(RegistrationFormType::class, $user);
  360. //        $form->remove("plainPassword");
  361. //        $form->remove("email");
  362. //        $form->remove('iban');
  363. //        $form->remove('roles');
  364. //        $form->remove('bic');
  365. //        $form->remove('bank');
  366. //        $form->remove('accountOwner');
  367. //        $form->add('iban', TextType::class, [
  368. //            'label' => 'IBAN',
  369. //            'required' => false,
  370. //        ]);
  371. //        $form->add('bic', TextType::class, [
  372. //            'label' => 'BIC',
  373. //            'required' => false,
  374. //        ]);
  375. //        $form->add('bank', TextType::class, [
  376. //            'label' => 'Bank',
  377. //            'required' => false,
  378. //        ]);
  379. //        $form->add('skiclub', EntityType::class, [
  380. //            'class' => SkiUser::class,
  381. //            'query_builder' => function (EntityRepository $er) use ($users) {
  382. //                return $er->createQueryBuilder('s')
  383. //                    ->andWhere('s.user = :user')
  384. //                    ->setParameter('user', $users);
  385. //
  386. //            },
  387. //
  388. //            'choice_label' => '',
  389. //        ]);
  390. //        $form->add('accountOwner', TextType::class, [
  391. //            'label' => 'Kontoinhaber',
  392. //            'required' => false,
  393. //        ]);
  394. //        if ($user->getBirthDate() != null) {
  395. //            $form->get('birthDate')->setData($user->getBirthDate()->format('d/m/Y'));
  396. //        }
  397. //        $form->handleRequest($request);
  398. //
  399. //        if ($form->isSubmitted() && $form->isValid()) {
  400. //
  401. //            if ($form->get('Registrieren')->isClicked()) {
  402. //
  403. //                $mailService = new MailService($helper, $mailer, $entityManager);
  404. //            }
  405. //            $birthDate = $form->get('birthDate')->getData();
  406. //            $user->setMainUser($users);
  407. //            $user->setIsVerified(true);
  408. //
  409. //            if ($birthDate != null) {
  410. //                $user->setBirthDate(date_create_from_format('d/m/Y', $birthDate));
  411. //
  412. //            }
  413. //            $user->setRoles(['ROLE_USER']);
  414. //
  415. //
  416. //            $skiclubUser = new SkiUser();
  417. //            $skiclubUser->setUser($user);
  418. //            $skiclubUser->setSkiClub($skiClub);
  419. //            $skiclubUser->setIsVerified(true);
  420. //            $entityManager->persist($user);
  421. //            $entityManager->persist($skiclubUser);
  422. //            $entityManager->flush();
  423. //            $this->addFlash('success', 'Neuer Nutzer wurde erfolgreich angelegt');
  424. //            $mailService->regestrierungSubUser($user, $skiClub);
  425. //
  426. //            return $this->redirectToRoute('view_user', ['id' => $users->getId()]);
  427. //        }
  428. //
  429. //        return $this->render('registration/index.html.twig', [
  430. //            'registrationForm' => $form->createView(),
  431. //        ]);
  432. //    }
  433. }