src/UserBundle/Controller/PageController.php line 89

Open in your IDE?
  1. <?php
  2. namespace User\Controller;
  3. use App\Controller\Traits\FunctionsController;
  4. use App\Entity\Association;
  5. use Core\Controller\Traits\BaseController;
  6. use DateTime;
  7. use Shopping\Controller\Traits\BaseShoppingController;
  8. use Shopping\Entity\Cart;
  9. use Shopping\Entity\CartProduct;
  10. use Shopping\Entity\Order;
  11. use Shopping\Entity\OrderCommission;
  12. use Shopping\Entity\ProductDesign;
  13. use Shopping\Service\CommissionManager\CommissionManager;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use User\Controller\Traits\BaseUserController;
  17. use User\Entity\AccountType;
  18. use User\Entity\User;
  19. use User\Entity\UserAddress;
  20. use User\Entity\UserAssociationCategory;
  21. use User\Entity\UserAssociationLocalisation;
  22. /**
  23.  * Controller répondant aux methods "GET" de l'application
  24.  */
  25. class PageController extends AbstractController
  26. {
  27.     use BaseController;
  28.     use BaseShoppingController;
  29.     use BaseUserController;
  30.     use FunctionsController;
  31.     /**
  32.      * Page de connexion d'un utilisateur
  33.      */
  34.     public function connect(Request $request)
  35.     {
  36.         // Vérification si l'utilisteur est déjà connecté
  37.         $redirection $this->checkUserConnected();
  38.         if ($redirection != null) {
  39.             // Redirection vers une page spécifique
  40.             return $this->redirect($redirection);
  41.         }
  42.         // Affichage de la page de connexion
  43.         return $this->generateTemplate('@app/user/login', []);
  44.     }
  45.     /**
  46.      * Page de déconnexion d'un utilisateur
  47.      */
  48.     public function disconnect(Request $request)
  49.     {
  50.         // Demande de déconnexion
  51.         $response $this->forward('User\Controller\ActionController::disconnect_user', [
  52.             'request' => $request
  53.         ]);
  54.         // Affichage de la page de déconnexion
  55.         return $this->generateTemplate('@app/user/logout', []);
  56.     }
  57.     /**
  58.      * Page d'inscription d'un utilisateur
  59.      */
  60.     public function register(Request $request)
  61.     {
  62.         // Vérification si l'utilisteur est déjà connecté
  63.         $redirection $this->checkUserConnected();
  64.         if ($redirection != null) {
  65.             // Redirection s'il est connecté
  66.             return $this->redirect($redirection);
  67.         }
  68.         // Affichage de la page d'inscription
  69.         return $this->generateTemplate('@app/user/register', []);
  70.     }
  71.     /**
  72.      * Page de connexion / inscription d'un utilisateur
  73.      */
  74.     public function connect_register(Request $request)
  75.     {
  76.         // Vérification si l'utilisteur est déjà connecté
  77.         $redirection $this->checkUserConnected();
  78.         if ($redirection != null) {
  79.             // Redirection s'il est connecté
  80.             return $this->redirect($redirection);
  81.         }
  82.         // Affichage de la page d'inscription
  83.         return $this->generateTemplate('@app/user/login_register', []);
  84.     }
  85.     /**
  86.      * Page de suppression du compte utilisateur
  87.      */
  88.     public function user_remove(Request $request)
  89.     {
  90.         // Affichage de la page après la supperession du compte
  91.         return $this->generateTemplate('@app/user/user_remove', []);
  92.     }
  93.     /**
  94.      * Page de compte désactivé
  95.      */
  96.     public function user_desactive(Request $request)
  97.     {
  98.         // Vérification si l'utilisteur est désactivé
  99.         $redirection $this->checkUserDesactive();
  100.         if (!$redirection) {
  101.             // Redirection s'il n'est pas connecté
  102. //            return $this->redirect($this->vars['pages']['list']['page_default_604cdefd8f455']->getUri());
  103.         }
  104.         // Affichage de la page de compte désactivé
  105.         return $this->generateTemplate('@app/user/messages/desactive', []);
  106.     }
  107.     /**
  108.      * Page de réinitialisation du mot de passe
  109.      */
  110.     public function forgot_password(Request $request)
  111.     {
  112.         // Vérification si l'utilisteur est déjà connecté
  113.         $redirection $this->checkUserConnected();
  114.         if ($redirection != null) {
  115.             // Redirection s'il est déjà connecté
  116.             return $this->redirect($redirection);
  117.         }
  118.         // Affichage de la page de réinitialisation du mot de passe
  119.         return $this->generateTemplate('@app/user/messages/forgot_password', []);
  120.     }
  121.     /**
  122.      * Page de réinitialisation du mot de passe - Confirmation
  123.      */
  124.     public function forgot_password_reset(Request $request)
  125.     {
  126.         // Vérification si l'utilisteur est déjà connecté
  127.         $redirection $this->checkUserConnected();
  128.         if ($redirection != null) {
  129.             return $this->redirect($redirection);
  130.         }
  131.         $query $request->server->get('QUERY_STRING');
  132.         preg_match('/token=([a-zA-Z0-9-_]+)&email=([a-zA-Z0-9@-_\.]+)/'$query$matchesPREG_OFFSET_CAPTURE);
  133.         $this->vars['forgot_token'] = $token $matches[1][0];
  134.         $this->vars['forgot_email'] = $email $matches[2][0];
  135.         // Vérification de l'inexistance de l'utilisateur
  136.         $user $this->getDoctrine()->getRepository(User::class)->findByEmail($email);
  137.         if ($user == null) {
  138.             // Aucun utilisateur avec cette adresse e-mail
  139.             return $this->redirect($this->vars['pages']['page_default_5fc9203cb6e67']->getUri());
  140.         }
  141.         if ($user->getForgotToken() != $token) {
  142.             // Erreur sur le token
  143.             return $this->redirect($this->vars['pages']['list']['page_default_5fc9203cb6e67']->getUri());
  144.         }
  145.         $maxTime $user->getForgotTime();
  146.         $maxTime->modify('+1 day');
  147.         $nowTime = new DateTime();
  148.         if ($nowTime $maxTime) {
  149.             $em $this->getDoctrine()->getManager();
  150.             $user->setForgotToken(null);
  151.             $user->setForgotTime(null);
  152.             $em->persist($user);
  153.             $em->flush();
  154.             // Temps écoulé pour la réinitialisation
  155.             return $this->generateTemplate('@app/user/messages/forgot_password_expire', []);
  156.         }
  157.         return $this->generateTemplate('@app/user/messages/forgot_password_reset', []);
  158.     }
  159.     /**
  160.      * Tableau de bords du compte utilisateur
  161.      */
  162.     public function account(Request $request)
  163.     {
  164.         // Vérification si l'utilisteur est désactivé
  165.         $redirection $this->checkUserConnected();
  166.         if (!$redirection) {
  167.             // Redirection s'il n'est pas connecté
  168.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  169.         }
  170.         return $this->redirect('/compte/commandes');
  171. //        return $this->generateTemplate('@app/user/account/dashboard', []);
  172.     }
  173.     /**
  174.      * Informations du compte utilisateur ( Mot de passe, date de naissance, ... )
  175.      */
  176.     public function account_information_particulier(Request $request)
  177.     {
  178.         // Vérification si l'utilisteur est désactivé
  179.         $redirection $this->checkUserConnected();
  180.         if (!$redirection) {
  181.             // Redirection s'il n'est pas connecté
  182.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  183.         }
  184.         // Vérification des accès
  185.         if ($this->vars['account']['user']->getAccountType() != AccountType::PARTICULAR) {
  186.             return $this->redirectNotFoundException($request);
  187.         }
  188.         return $this->generateTemplate('@app/user/account/informations', []);
  189.     }
  190.     /**
  191.      * Informations du compte utilisateur ( Mot de passe, date de naissance, ... )
  192.      */
  193.     public function account_information_profesionnel(Request $request)
  194.     {
  195.         // Vérification si l'utilisteur est désactivé
  196.         $redirection $this->checkUserConnected();
  197.         if (!$redirection) {
  198.             // Redirection s'il n'est pas connecté
  199.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  200.         }
  201.         // Vérification des accès
  202.         if ($this->vars['account']['user']->getAccountType() != AccountType::PROFESSIONAL) {
  203.             return $this->redirectNotFoundException($request);
  204.         }
  205.         return $this->generateTemplate('@app/user/account/informations_professionnel', []);
  206.     }
  207.     /**
  208.      * Liste des adresses associées au compte utilisateur ( facturation, livraison )
  209.      */
  210.     public function account_addresses(Request $request)
  211.     {
  212.         // Vérification si l'utilisteur est désactivé
  213.         $redirection $this->checkUserConnected();
  214.         if (!$redirection) {
  215.             // Redirection s'il n'est pas connecté
  216.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  217.         }
  218.         return $this->generateTemplate('@app/user/account/addresses', []);
  219.     }
  220.     /**
  221.      * Affichage d'une adresse associée au compte utilisateur
  222.      */
  223.     public function account_address(Request $request)
  224.     {
  225.         // Vérification si l'utilisteur est désactivé
  226.         $redirection $this->checkUserConnected();
  227.         if (!$redirection) {
  228.             // Redirection s'il n'est pas connecté
  229.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  230.         }
  231.         $address_id $this->getCurrentPageSlug($request2);
  232.         // Récupération de l'adresse utilisateur
  233.         $this->vars['address'] = $address $this->getDoctrine()->getRepository(UserAddress::class)->find($address_id);
  234.         // ECHEC - L'utilisateur n'est pas le propriétaire de l'adresse demandée
  235.         if ($address != null && $address->getUser()->getId() != $this->vars['account']['user']->getId()) {
  236.             return $this->redirectNotFoundException($request);
  237.         }
  238.         return $this->generateTemplate('@app/user/account/address', []);
  239.     }
  240.     /**
  241.      * Inscriptions aux newsletters du compte utilisateur
  242.      */
  243.     public function account_newsletter(Request $request)
  244.     {
  245.         // Vérification si l'utilisteur est désactivé
  246.         $redirection $this->checkUserConnected();
  247.         if (!$redirection) {
  248.             // Redirection s'il n'est pas connecté
  249.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  250.         }
  251.         return $this->generateTemplate('@app/user/account/newsletter', []);
  252.     }
  253.     /**
  254.      * Liste des commandes réalisées par le compte utilisateur
  255.      */
  256.     public function account_orders(Request $request)
  257.     {
  258.         // Vérification si l'utilisteur est désactivé
  259.         $redirection $this->checkUserConnected();
  260.         if (!$redirection) {
  261.             // Redirection s'il n'est pas connecté
  262.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  263.         }
  264.         $user $this->vars['account']['user'];
  265.         $this->vars['orders'] = $orders $this->getDoctrine()->getRepository(Order::class)->findBy([
  266.             'user' => $user->getId(),
  267.             'is_visible' => true
  268.         ], ['created_at' => 'DESC']);
  269.         return $this->generateTemplate('@app/user/account/orders', []);
  270.     }
  271.     /**
  272.      * Affichage d'une commande réalisée par le compte utilisateur
  273.      */
  274.     public function account_order(Request $request)
  275.     {
  276.         // Vérification si l'utilisteur est désactivé
  277.         $redirection $this->checkUserConnected();
  278.         if (!$redirection) {
  279.             // Redirection s'il n'est pas connecté
  280.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  281.         }
  282.         $order_slug $this->getCurrentPageSlug($request2);
  283.         // Récupération de l'adresse utilisateur
  284.         $this->vars['order'] = $order $this->getDoctrine()->getRepository(Order::class)->findByReference($order_slug);
  285.         // ECHEC - L'utilisateur n'est pas le propriétaire de la commande
  286.         if ($order != null && $order->getUser()->getId() != $this->vars['account']['user']->getId()) {
  287.             return $this->redirectNotFoundException($request);
  288.         }
  289.         // Commande non finalisée
  290.         if(!$order->getIsVisible()){
  291.             return $this->redirectNotFoundException($request);
  292.         }
  293.         return $this->generateTemplate('@app/user/account/order', []);
  294.     }
  295.     /**
  296.      * Affichage la configuration de l'utilisateur
  297.      */
  298.     public function account_settings(Request $request)
  299.     {
  300.         // Vérification si l'utilisteur est désactivé
  301.         $redirection $this->checkUserConnected();
  302.         if (!$redirection) {
  303.             // Redirection s'il n'est pas connecté
  304.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  305.         }
  306.         return $this->generateTemplate('@app/user/account/settings', []);
  307.     }
  308.     /**
  309.      * Affichage de la liste des favoris
  310.      */
  311.     public function account_favoris(Request $request)
  312.     {
  313.         // Vérification si l'utilisteur est désactivé
  314.         $redirection $this->checkUserConnected();
  315.         if (!$redirection) {
  316.             // Redirection s'il n'est pas connecté
  317.             return $this->redirect($this->vars['pages']['list']['page_default_5fc91ba0ae778']->getUri());
  318.         }
  319.         $objects $this->vars['account']['user']->getFavoris();
  320.         $results = [];
  321.         foreach ($objects as $object) {
  322.             $item = new \Shopping\Service\Product\Product($this->getDoctrine(), $this->vars['account']['user']);
  323.             $item->createProduct($object->getProduct()->getId());
  324.             $results[] = [
  325.                 'favoris' => $object,
  326.                 'entity_manager' => $item
  327.             ];
  328.         }
  329.         return $this->generateTemplate('@app/user/account/favoris', [
  330.             'favoris' => $results
  331.         ]);
  332.     }
  333. }