src/Controller/SecurityController.php line 102

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Member;
  4. use App\Form\ChangePasswordType;
  5. use App\Form\RegistrationFormType;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\Form\FormInterface;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\DomCrawler\Crawler;
  10. use Symfony\Component\CssSelector\CssSelectorConverter;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use App\Service\UserManagement;
  15. use App\Service\FileUploader;
  16. use App\Service\FileManagement;
  17. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  18. class SecurityController extends AbstractController
  19. {
  20.     private function createRegistrationForm(Request $request): FormInterface
  21.     {
  22.         $user = new Member();
  23.         $form $this->createForm(RegistrationFormType::class, $user);
  24.         $form->handleRequest($request);
  25.         return $form;
  26.     }
  27.     /**
  28.      * @Route("/logout", name="app_logout")
  29.      */
  30.     public function logout(): void
  31.     {
  32.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  33.     }
  34.     /**
  35.      * @Route("/base/{lang}", name="research-base")
  36.      */
  37.     public function research_base(Request $requestFileManagement $fileManagement$lang='fr')
  38.     {
  39.         $html file_get_contents('language/'.$lang.'/base.xml');
  40.         $basic_lv = new Crawler($html);
  41.         $html file_get_contents('language/'.$lang.'/security/research-base.xml');
  42.         $p_lv = new Crawler($html);
  43.         $form $this->createRegistrationForm($request);
  44.         // If a request for download a PDF is made
  45.         if ( empty($request->get('file_name')) == false ){
  46.             $file_name $request->get('file_name');
  47.             return $fileManagement->downloadFile($file_name);
  48.         }
  49.         $wp_array = array('wp1','wp2','wp3','wp4','wp5','wp6');
  50.         return $this->render('security/research-base.html.twig',[
  51.             'registrationForm' => $form->createView(),
  52.           'blv'=>$basic_lv,
  53.           'plv'=>$p_lv,
  54.           'lang'=>$lang,
  55.           'file_list'=>$fileManagement->listFiles($wp_array)
  56.         ]);
  57.     }
  58.     /**
  59.      * @Route("/deposit/{lang}", name="research-deposit")
  60.      */
  61.     public function research_deposit(Request $requestFileManagement $fileManagement$lang='fr')
  62.     {
  63.         $html file_get_contents('language/'.$lang.'/base.xml');
  64.         $basic_lv = new Crawler($html);
  65.         $html file_get_contents('language/'.$lang.'/security/research-deposit.xml');
  66.         $p_lv = new Crawler($html);
  67.         $form $this->createRegistrationForm($request);
  68.         // If a request for upload a PDF is made
  69.         if ( empty($request->files->get('fileToUpload')) == false ){
  70.             $file $request->files->get('fileToUpload');
  71.             $wp_id $request->get('WP');
  72.             $username $request->get('username');
  73.             return $fileManagement->upload($file$wp_id$username);
  74.         }
  75.         // If a request for delete a PDF is made
  76.         if ( empty($request->get('fileToDelete')) == false ){
  77.             $file_name $request->get('fileToDelete');
  78.             $wp $request->get('wp');
  79.             return $fileManagement->deleteFile($file_name$wp);
  80.         }
  81.         $wp_array = array('wp1','wp2','wp3','wp4','wp5','wp6');
  82.         return $this->render('security/research-deposit.html.twig',[
  83.           'blv'=>$basic_lv,
  84.           'plv'=>$p_lv,
  85.           'lang'=>$lang,
  86.             'registrationForm' => $form->createView(),
  87.           'file_list'=>$fileManagement->listOwnedFiles($wp_array$this->getUser()->getUsername())
  88.         ]);
  89.     }
  90.     /**
  91.      * @Route("/user-management/{lang}", name="user-management")
  92.      */
  93.     public function user_management(Request $requestUserManagement $um$lang='fr')
  94.     {
  95.         $html file_get_contents('language/'.$lang.'/base.xml');
  96.         $basic_lv = new Crawler($html);
  97.         $html file_get_contents('language/'.$lang.'/security/user-management.xml');
  98.         $partners_lv = new Crawler($html);
  99.         $form $this->createRegistrationForm($request);
  100.         $current_user $this->getUser();
  101.         // If a request for add an user is made
  102.         if ( empty($request->get('email')) == false ){
  103.             $firstname $request->get('firstname');
  104.             $lastname $request->get('lastname');
  105.             $username $request->get('email');
  106.             $org $request->get('org');
  107.             $password $request->get('password');
  108.             $um->addUser($firstname$lastname$username$org$password)->send();
  109.         }
  110.         // If a request for delete an user is made
  111.         if ( empty($request->get('email-delete')) == false ){
  112.             $emaildelete $request->get('email-delete');
  113.             $um->deleteUser($emaildelete)->send();
  114.         }
  115.         // If a request for change role is made
  116.         if (empty($request->get('new-role')) == false){
  117.             $newRole $request->get('new-role');
  118.             $userId $request->get('user-id');
  119.             $um->changeRole($userId$newRole)->send();
  120.         }
  121.         return $this->render('security/user-management.html.twig',[
  122.           'blv'=>$basic_lv,
  123.           'registrationForm' => $form->createView(),
  124.           'plv'=>$partners_lv,
  125.           'lang'=>$lang
  126.         ]);
  127.     }
  128.     /**
  129.      * @Route("/user-management/change-role/{userId}/{newRole}", name="change-role")
  130.      */
  131.     public function changeRole(UserManagement $um$userId$newRole)
  132.     {
  133.         $um->changeRole($userId$newRole);
  134.         return $this->redirectToRoute('user-management');
  135.     }
  136.     /**
  137.      * @Route("/my-account/{lang}", name="my-account")
  138.      */
  139.     public function my_account(Request $requestUserManagement $um$lang='fr')
  140.     {
  141.         $html file_get_contents('language/'.$lang.'/base.xml');
  142.         $basic_lv = new Crawler($html);
  143.         $html file_get_contents('language/'.$lang.'/security/my-account.xml');
  144.         $partners_lv = new Crawler($html);
  145.         $form $this->createRegistrationForm($request);
  146.         $user $this->getUser();
  147.         $form2 $this->createForm(ChangePasswordType::class, $user);
  148.         // If a request for change password is made
  149.         if ( empty($request->get('new-password')) == false ){
  150.             $username $request->get('username');
  151.             $oldpassword $request->get('old-password');
  152.             $newpassword $request->get('new-password');
  153.             $um->changePassword($username,$oldpassword,$newpassword)->send();
  154.         }
  155.         return $this->render('security/my-account.html.twig',[
  156.           'blv'=>$basic_lv,
  157.           'plv'=>$partners_lv,
  158.           'lang'=>$lang,
  159.             'form' => $form2->createView(),
  160.             'registrationForm' => $form->createView()
  161.         ]);
  162.     }
  163.     /**
  164.      * @Route("/login/{lang}", name="app_login")
  165.      */
  166.     public function login(AuthenticationUtils $authenticationUtils$lang='fr'Request $request): Response
  167.     {
  168.         $html file_get_contents('language/'.$lang.'/base.xml');
  169.         $basic_lv = new Crawler($html);
  170.         $html file_get_contents('language/'.$lang.'/security/my-account.xml');
  171.         $partners_lv = new Crawler($html);
  172.         $form $this->createRegistrationForm($request);
  173.         // if ($this->getUser()) {
  174.         //     return $this->redirectToRoute('target_path');
  175.         // }
  176.         // get the login error if there is one
  177.         $error $authenticationUtils->getLastAuthenticationError();
  178.         // last username entered by the user
  179.         $lastUsername $authenticationUtils->getLastUsername();
  180.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error,
  181.             'blv'=>$basic_lv,
  182.             'plv'=>$partners_lv,
  183.             'lang'=>$lang,
  184.             'form' => $form->createView(),
  185.             'registrationForm' => $form->createView()]);
  186.     }
  187. }