src/Controller/Website/LoginController.php line 267

Open in your IDE?
  1. <?php
  2. namespace EADPlataforma\Controller\Website;
  3. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Cookie;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use EADPlataforma\Entity\User;
  9. use EADPlataforma\Entity\Session;
  10. use EADPlataforma\Entity\Cart;
  11. use EADPlataforma\Entity\Enrollment;
  12. use EADPlataforma\Entity\ConfigurationIp;
  13. use EADPlataforma\Enum\UserEnum;
  14. use EADPlataforma\Enum\ClientEnum;
  15. use EADPlataforma\Enum\SessionEnum;
  16. use EADPlataforma\Enum\ServicesEnum;
  17. use EADPlataforma\Enum\ConfigurationEnum;
  18. use EADPlataforma\Enum\ConfigurationIpEnum;
  19. use EADPlataforma\Enum\ErrorEnum;
  20. use EADPlataforma\Enum\WebhookQueueEnum;
  21. use EADPlataforma\Enum\WebhookEnum;
  22. use EADPlataforma\Enum\TagsMarketingEnum;
  23. /**
  24.  * @Route(
  25.  *      schemes         = {"http|https"}
  26.  * )
  27.  * @Cache(
  28.  *      maxage          = "0",
  29.  *      smaxage         = "0",
  30.  *      expires         = "now",
  31.  *      public          = false
  32.  * )
  33.  */
  34. class LoginController extends AbstractWebsiteController {
  35.     /**
  36.      * @Route(
  37.      *      path          = "/login/{hash}",
  38.      *      name          = "login",
  39.      *      methods       = {"GET"},
  40.      *      defaults      = { "hash": null }
  41.      * )
  42.      * @Route(
  43.      *      path          = "/entrar/{hash}",
  44.      *      name          = "loginOld",
  45.      *      methods       = {"GET"},
  46.      *      defaults      = { "hash": null }
  47.      * )
  48.      */
  49.     public function loginPage(Request $request) {
  50.         if($this->user){
  51.             $enrollmentRepository $this->em->getRepository(Enrollment::class);
  52.             $enrollmentNumber $enrollmentRepository->countUserEnrollment(
  53.                 $this->user->getId()
  54.             );
  55.             
  56.             $platformType $this->client->getPlatformType();
  57.             if(
  58.                 !empty($enrollmentNumber) || 
  59.                 $platformType == ClientEnum::PLATFORM_TYPE_RESTRICTED
  60.             ){
  61.                 return $this->redirectToRoute('resume');
  62.             }
  63.             return $this->redirectToRoute('home');
  64.         }
  65.         $this->data['hash'] = $request->get('hash');
  66.         if(!empty($this->generalService->getCookie('remember'))){
  67.             $this->data['remember'] = true;
  68.         }else{
  69.             $this->data['remember'] = false;
  70.         }
  71.         return $this->renderEAD('login/login.html.twig');
  72.     }
  73.     /**
  74.      * @Route(
  75.      *      path          = "/confirm/{hash}",
  76.      *      name          = "loginConfirm",
  77.      *      methods       = {"GET"},
  78.      *      requirements  = { "hash" = "([a-zA-Z0-9_-]+)" }
  79.      * )
  80.      */
  81.     public function loginConfirm(Request $request) {
  82.         if($this->user){
  83.             
  84.             $sessionOn $this->user->getSession();
  85.             $sessionOn->delete();
  86.             $this->configuration->getSessionSym()->set('session'null);
  87.             $this->em->flush();
  88.             $this->generalService->deleteCookie('remember');
  89.             $this->generalService->deleteCookie('sessiontoken');
  90.             $this->generalService->logoffWS(
  91.                 $sessionOn,
  92.                 $this->clientConfig->getId()
  93.             );
  94.         }
  95.         $this->requestUtil->setRequest($request)->setData();
  96.         $hash $request->get('hash');
  97.         $userRepository $this->em->getRepository(User::class);
  98.         $user $userRepository->findOneBy([ 
  99.             "hashIdentify" => $hash,
  100.             "deleted" => UserEnum::ITEM_NO_DELETED
  101.         ]);
  102.         $this->data["hash"] = base64_encode($this->domain);
  103.         $this->data['remember'] = $this->generalService->getCookie('remember');
  104.          
  105.         if(!$user){
  106.             $this->data["confirmMsg"] = $this->configuration->getLanguage(
  107.                 'user_not_found''login'
  108.             );
  109.             $this->data["confirmStatus"] = UserEnum::NO;
  110.         
  111.             return $this->renderEAD('login/login.html.twig');
  112.         }
  113.         if($user->getStatus() != UserEnum::WAITING){
  114.             $this->data["confirmMsg"] = $this->configuration->getLanguage(
  115.                 'invalid_action''login'
  116.             );
  117.             $this->data["confirmStatus"] = UserEnum::NO;
  118.             return $this->renderEAD('login/login.html.twig');
  119.         }
  120.         $user->setStatus(UserEnum::ACTIVE);
  121.         $user->setConfirmationDate(date('Y-m-d H:i:s'));
  122.         $user->setValidEmail(UserEnum::DELIVERABLE);
  123.         $pixelService $this->generalService->getService('Marketing\\PixelService');
  124.         $pixelService->sendConversion('CompleteRegistration');
  125.         $marketingService $this->generalService->getService('Marketing\\MarketingService');
  126.         $marketingService->setTag(TagsMarketingEnum::TAG_CONFIRM_REGISTER);
  127.         $marketingService->setUser($user);
  128.         $marketingService->send();
  129.         $this->em->flush();
  130.         $userWebhook $userRepository->getToWebhook($user);
  131.         $dataObj= (object)[
  132.             "user" => $userWebhook,
  133.         ];
  134.         
  135.         $webhookService $this->generalService->getService('WebhookService');
  136.         $webhookService->addItemList(WebhookEnum::USER$dataObj);
  137.         $this->data["confirmMsg"] = $this->configuration->getLanguage(
  138.             'user_confirmed'
  139.             'login'
  140.         );
  141.         $this->data["confirmStatus"] = UserEnum::YES;
  142.         
  143.         return $this->renderEAD('login/login.html.twig');
  144.     }
  145.     /**
  146.      * @Route(
  147.      *      path          = "/stopEmail/{hash}",
  148.      *      name          = "stopEmail",
  149.      *      methods       = {"GET"},
  150.      *      requirements  = { "hash" = "([a-zA-Z0-9_-]+)" }
  151.      * )
  152.      */
  153.     public function stopEmail(Request $request) {
  154.         $this->requestUtil->setRequest($request)->setData();
  155.         $hash $request->get('hash');
  156.         
  157.         $user $this->em->getRepository(User::class)->findOneBy([ 
  158.             "hashIdentify" => $hash,
  159.             "deleted" => UserEnum::ITEM_NO_DELETED
  160.         ]);
  161.        
  162.         if(!$user){
  163.             $this->data["confirmMsg"] = $this->configuration->getLanguage('user_not_found''login');
  164.             $this->data["confirmStatus"] = UserEnum::NO;
  165.             $this->data["hash"] = null;
  166.         
  167.             return $this->renderEAD('login/login.html.twig');
  168.         }
  169.         $this->data["hash"] = $hash;
  170.         $sessionOn $user->getSession();
  171.         if($sessionOn){
  172.             $sessionOn->delete();
  173.             $this->configuration->getSessionSym()->set('session'null);
  174.             $this->em->flush();
  175.             $this->generalService->deleteCookie('remember');
  176.             $this->generalService->deleteCookie('sessiontoken');
  177.             $this->generalService->logoffWS(
  178.                 $sessionOn,
  179.                 $this->clientConfig->getId()
  180.             );
  181.         }
  182.         
  183.         $user->delete();
  184.         $this->em->flush();
  185.         
  186.         $this->data["confirmMsg"] = $this->configuration->getLanguage('user_deleted''login');
  187.         $this->data["confirmStatus"] = UserEnum::YES;
  188.         return $this->renderEAD('login/login.html.twig');
  189.     }
  190.     /**
  191.      * @Route(
  192.      *      path          = "/stopNotification/{hash}",
  193.      *      name          = "stopNotification",
  194.      *      methods       = {"GET"},
  195.      *      requirements  = { "hash" = "([a-zA-Z0-9_-]+)" }
  196.      * )
  197.      */
  198.     public function stopNotification(Request $request) {
  199.         $this->requestUtil->setRequest($request)->setData();
  200.         $hash $request->get('hash');
  201.         $user $this->em->getRepository(User::class)->findOneBy([ 
  202.             "hashIdentify" => $hash,
  203.             "deleted" => UserEnum::ITEM_NO_DELETED
  204.         ]);
  205.         
  206.         if(!$user){
  207.             $this->data["confirmMsg"] = $this->configuration->getLanguage(
  208.                 'user_not_found''login'
  209.             );
  210.             
  211.             $this->data["hash"] = null;
  212.         
  213.             return $this->renderEAD('login/login.html.twig');
  214.         }
  215.         
  216.         $this->data['user'] = $user;
  217.         return $this->renderEAD('login/stop-notification.html.twig');
  218.     }
  219.     /**
  220.      * @Route(
  221.      *      path          = "/login/fast/{pass}",
  222.      *      name          = "loginFast",
  223.      *      methods       = {"GET"}
  224.      * )
  225.     */
  226.     public function loginFast(Request $request) {
  227.        
  228.         $this->requestUtil->setRequest($request)->setData();
  229.         $session = new Session();
  230.         $pass $request->get('pass');
  231.         $pass $this->stringUtil->decryptArray($pass);
  232.         
  233.         if(empty($pass)){
  234.             return $this->redirectToRoute('notFound');
  235.         }
  236.         
  237.         $userId $pass['userId'];
  238.         $time $pass['time'];
  239.         $urlRedirect null;
  240.         if($userId == UserEnum::YES){
  241.             return $this->redirectToRoute('notFound');
  242.         }
  243.             
  244.         if(!empty($pass['urlRedirect'])){
  245.             $urlRedirect $pass['urlRedirect'];
  246.         }
  247.         $urlRedirectCart $this->requestUtil->getField('url');
  248.         if(!empty($urlRedirectCart)){
  249.             $urlRedirect $urlRedirectCart;
  250.         }
  251.         
  252.         $user $this->em->getRepository(User::class)->findOneBy([
  253.             "id" => $userId,
  254.             "deleted" => UserEnum::ITEM_NO_DELETED ,
  255.         ]);
  256.            
  257.         if(!$user){
  258.             return $this->redirectToRoute('notFound');
  259.         }
  260.         
  261.         if($user->getStatus() == UserEnum::BLOCK){
  262.             return $this->redirectToRoute('notFound');
  263.         }
  264.         $this->userPermissionUtil->setUser($user);
  265.         
  266.         $platformStatus $this->clientConfig->getPlatformStatus();
  267.         if($platformStatus == ClientEnum::PLATFORM_STATUS_FREEZED){
  268.             if(!$this->userPermissionUtil->canAccessAdm()){
  269.                 return $this->redirectToRoute('notFound');
  270.             }
  271.         }
  272.         $ipApi $this->generalService->getService('IpApiService');
  273.         
  274.         $ipApi->setRequest($request);
  275.         $session->setUser($user);
  276.         $session->setIp($ipApi->getIp());
  277.         $session->setIspName($ipApi->getIsp());
  278.         $session->setCoordinate($ipApi->getCoordinate());
  279.         $session->setTimeZone($ipApi->getTimeZone());
  280.         $session->setCity($ipApi->getCity());
  281.         $session->setState($ipApi->getState());
  282.         $session->setCountry($ipApi->getCountry());
  283.         $session->setUserAgent($request->headers->get('User-Agent'));
  284.         $sessionOn $this->em->getRepository(Session::class)->findOneBy([ 
  285.             "user" => $user->getId(),
  286.             "deleted" => UserEnum::ITEM_NO_DELETED
  287.         ]);
  288.         if($user->getType() != UserEnum::STUDENT){
  289.             $session->setIsAdmin(SessionEnum::YES);
  290.         }else{
  291.             if($sessionOn){
  292.                 $sessionOn->delete();
  293.                 $this->generalService->logoffWS(
  294.                     $sessionOn,
  295.                     $this->clientConfig->getId()
  296.                 );
  297.             }
  298.         }
  299.         $errors $this->validateEntity($session);
  300.         if($errors){
  301.             return $this->eadResponse($errorsErrorEnum::FIELD_EMPTY);
  302.         }
  303.         $this->em->persist($session);
  304.         $this->em->flush();
  305.         $crmService $this->generalService->getService('CRM\\CrmService');
  306.         $crmService->savePerson($user);
  307.         $emptyCart $this->em->getRepository(Cart::class)->updateCartHashToUser($user);
  308.         $time 'Session';
  309.         $this->generalService->setCookie('sessiontoken'$session->getToken(), $time);
  310.         if(is_null($urlRedirect)){
  311.             return $this->redirectToRoute('resume');
  312.         }
  313.         if(
  314.             $emptyCart &&
  315.             (empty($urlRedirect) || stristr($urlRedirect,'/cart'))
  316.             && !stristr($urlRedirect,'/indvidual')
  317.         ){
  318.             return $this->redirectToRoute('resume');
  319.         }
  320.         
  321.         return $this->redirect($urlRedirect301);
  322.     }
  323.     /**
  324.      * @Route(
  325.      *      path          = "/login/api/{pass}",
  326.      *      name          = "loginApi",
  327.      *      methods       = {"GET"}
  328.      * )
  329.     */
  330.     public function loginApi(Request $request) {
  331.        
  332.         $this->requestUtil->setRequest($request)->setData();
  333.         $ipApi $this->generalService->getService('IpApiService');
  334.         $session = new Session();
  335.         $pass $request->get('pass');
  336.         $pass $this->stringUtil->decryptArray($pass);
  337.         
  338.         if(empty($pass)){
  339.             return $this->eadResponse([ 
  340.                 "message" => $this->configuration->getLanguage('login_invalid''login')
  341.             ], ErrorEnum::ACTION_INVALID);
  342.         }
  343.         
  344.         $userId $pass['userId'];
  345.         $time $pass['time'];
  346.         $urlRedirect null;
  347.         
  348.         if(!empty($pass['urlRedirect'])){
  349.             $urlRedirect $pass['urlRedirect'];
  350.         }
  351.         
  352.         $user $this->em->getRepository(User::class)->findOneBy([
  353.             "id" => $userId,
  354.             "status" => UserEnum::ACTIVE,
  355.             "deleted" => UserEnum::ITEM_NO_DELETED 
  356.         ]);
  357.            
  358.         if(!$user){
  359.             return $this->eadResponse([ 
  360.                 "message" => $this->configuration->getLanguage('login_invalid''login'
  361.             ], ErrorEnum::ACTION_INVALID);
  362.         }
  363.         if($user->getStatus() == UserEnum::BLOCK){
  364.             return $this->eadResponse([ 
  365.                 "message" => $this->configuration->getLanguage('login_invalid''login'
  366.             ], ErrorEnum::ACTION_INVALID);
  367.         }
  368.         if($user->getId() == UserEnum::YES){
  369.             return $this->eadResponse([ 
  370.                 "message" => $this->configuration->getLanguage('login_invalid''login'
  371.             ], ErrorEnum::ACTION_INVALID);
  372.         }
  373.         $platformStatus $this->clientConfig->getPlatformStatus();
  374.         if($platformStatus == ClientEnum::PLATFORM_STATUS_FREEZED){
  375.             if(!$this->userPermissionUtil->canAccessAdm()){
  376.                 return $this->eadResponse([ 
  377.                     "message" => $this->configuration->getLanguage('login_invalid''login'
  378.                 ], ErrorEnum::ACTION_INVALID);
  379.             }
  380.         }
  381.         $ipApi->setRequest($request);
  382.         $session->setUser($user);
  383.         $session->setIp($ipApi->getIp());
  384.         $session->setIspName($ipApi->getIsp());
  385.         $session->setCoordinate($ipApi->getCoordinate());
  386.         $session->setTimeZone($ipApi->getTimeZone());
  387.         $session->setCity($ipApi->getCity());
  388.         $session->setState($ipApi->getState());
  389.         $session->setCountry($ipApi->getCountry());
  390.         $session->setUserAgent($request->headers->get('User-Agent'));
  391.         $sessionOn $this->em->getRepository(Session::class)->findOneBy([ 
  392.             "user" => $user->getId(),
  393.             "deleted" => UserEnum::ITEM_NO_DELETED
  394.         ]);
  395.         if($user->getType() != UserEnum::STUDENT){
  396.             $session->setIsAdmin(SessionEnum::YES);
  397.         }else{
  398.             if($sessionOn){
  399.                 $sessionOn->delete();
  400.                 $this->generalService->logoffWS(
  401.                     $sessionOn,
  402.                     $this->clientConfig->getId()
  403.                 );
  404.             }
  405.         }
  406.         $errors $this->validateEntity($session);
  407.         if($errors){
  408.             return $this->eadResponse($errorsErrorEnum::FIELD_EMPTY);
  409.         }
  410.         $this->em->persist($session);
  411.         $this->em->flush();
  412.         $this->generalService->setCookie('sessiontoken'$session->getToken());
  413.         if(is_null($urlRedirect)){
  414.             return $this->redirectToRoute('resume');
  415.         }
  416.     
  417.         return $this->redirect($urlRedirect301);
  418.     }
  419.     /**
  420.      * @Route(
  421.      *      path          = "/login/eadmin/sso/{userSign}/{tokenSign}",
  422.      *      name          = "loginEadminSSO",
  423.      *      methods       = {"GET"}
  424.      * )
  425.     */
  426.     public function loginEadminSSO(Request $request){
  427.        
  428.         $this->requestUtil->setRequest($request)->setData();
  429.         $userSign $request->get('userSign');
  430.         $tokenSign $request->get('tokenSign');
  431.         $url $request->get('url');
  432.         $res $this->generalService->verifySignedDataExpire($tokenSign);
  433.         if($res != md5($request->getHost())){
  434.             return $this->redirectToRoute('notFound');
  435.         }
  436.         $userId $this->generalService->verifySignedDataExpire($userSign);
  437.         if(!$userId){
  438.             return $this->redirectToRoute('notFound');
  439.         }
  440.         $userAgent $request->headers->get('User-Agent');
  441.         $blockUserAgent = [
  442.             "axios",
  443.             "Axios",
  444.         ];
  445.         if(in_array($userAgent$blockUserAgent)){
  446.             return $this->redirectToRoute('notFound');
  447.         }
  448.         $userInfo $this->generalService->getUserFromEADAdminByID(
  449.             (string)$userId,
  450.             (string)$this->clientConfig->getId(),
  451.             (
  452.                 in_array($request->getHost(), ConfigurationEnum::DOMAIN_DEV) ? 
  453.                 ConfigurationEnum::IP_LOCAL 
  454.                 $request->getClientIp()
  455.             ),
  456.             $userAgent,
  457.             $request->getHost()
  458.         );
  459.         if(empty($userInfo['usuario_id'])){
  460.             return $this->redirectToRoute('notFound');
  461.         }
  462.         $permission = (isset($userInfo['permission']) ? $userInfo['permission'] : null);
  463.         $tokenOn $this->generalService->getCookie('sessiontoken');
  464.         if(!empty($tokenOn)){
  465.             $sessionOn $this->em->getRepository(Session::class)->findOneBy([ 
  466.                 "token" => $tokenOn
  467.             ]);
  468.             if($sessionOn){
  469.                 $sessionOn->delete();
  470.                 $this->generalService->logoffWS(
  471.                     $sessionOn,
  472.                     $this->clientConfig->getId()
  473.                 );
  474.                 $this->em->flush();
  475.             }
  476.         }
  477.         
  478.         $user $this->em->getRepository(User::class)->findOneBy([
  479.             "id" => UserEnum::YES 
  480.         ]);
  481.         $ipApi $this->generalService->getService('IpApiService');
  482.         $ipApi->setRequest($request);
  483.         $session = new Session();
  484.         $session->setUser($user);
  485.         $session->setIp($ipApi->getIp());
  486.         $session->setIspName($ipApi->getIsp());
  487.         $session->setCoordinate($ipApi->getCoordinate());
  488.         $session->setTimeZone($ipApi->getTimeZone());
  489.         $session->setCity($ipApi->getCity());
  490.         $session->setState($ipApi->getState());
  491.         $session->setCountry($ipApi->getCountry());
  492.         $session->setUserAgent($userAgent);
  493.         $session->setIsAdmin(SessionEnum::YES);
  494.         $session->setPermission($permission);
  495.         $errors $this->validateEntity($session);
  496.         if($errors){
  497.             return $this->redirectToRoute('notFound');
  498.         }
  499.         $this->em->persist($session);
  500.         $this->em->flush();
  501.         $this->generalService->setCookie('sessiontoken'$session->getToken());
  502.         if(empty($url)){
  503.             return $this->redirectToRoute('resume');
  504.         }
  505.     
  506.         return $this->redirect($url301);
  507.     }
  508.     /**
  509.      * @Route(
  510.      *      path          = "/change/password/{hash}",
  511.      *      name          = "changePasswordPost",
  512.      *      methods       = {"GET"},
  513.      *      requirements  = { "hash" = "([a-zA-Z0-9_-]+)" }
  514.      * )
  515.     */
  516.     public function changePassword(Request $request) {
  517.         $hash $request->get("hash");
  518.         $hashData json_decode(base64_decode($this->stringUtil->decodeHex($hash)));
  519.         $templateName 'login/recover-password.html.twig';
  520.         $error false;
  521.         $this->data['hash'] = $hash;
  522.         $this->data['remember'] = $this->generalService->getCookie('remember');
  523.         $user $this->em->getRepository(User::class)->findOneBy([
  524.             "id" => $hashData->userId,
  525.             "deleted" => UserEnum::ITEM_NO_DELETED
  526.         ]);
  527.         if(!$user){
  528.             $error true;
  529.         }
  530.         $oldPass $user->getOldPassword(true);
  531.         if(isset($hashData->passTotal) && $hashData->passTotal != count($oldPass)){
  532.             $error true;
  533.         }
  534.         if($hashData->today != date("Ymd")){
  535.             $error true;
  536.         }
  537.         if($error){
  538.             $this->data["confirmMsg"] = $this->configuration->getLanguage(
  539.                 'invalid_hash'
  540.                 'login'
  541.             );
  542.             $this->data["confirmStatus"] = UserEnum::NO;
  543.             $templateName 'login/login.html.twig';
  544.         }
  545.         
  546.         return $this->renderEAD($templateName);
  547.     }
  548.     /**
  549.      * @Route(
  550.      *      path          = "/logoff/user",
  551.      *      name          = "userLogoff",
  552.      *      methods       = {"GET"}
  553.      * )
  554.      */
  555.     public function logoffUser(Request $request) {
  556.         $userOrigin null;
  557.         if($this->user && $this->user->getSession()){
  558.             $sessionOn $this->user->getSession();
  559.             $userOrigin $sessionOn->getUserOrigin();
  560.             $sessionOn->delete();
  561.             $this->generalService->logoffWS(
  562.                 $sessionOn,
  563.                 $this->clientConfig->getId()
  564.             );
  565.         }
  566.         if($userOrigin){
  567.             $sessionOld $this->em->getRepository(Session::class)->findOneBy([ 
  568.                 "user" => $userOrigin->getId(),
  569.                 "deleted" => UserEnum::ITEM_NO_DELETED
  570.             ]);
  571.             $ipApi $this->generalService->getService('IpApiService');
  572.             $ipApi->setRequest($request);
  573.             
  574.             $session = new Session();
  575.             $session->setUser($userOrigin);
  576.             $session->setIp($ipApi->getIp());
  577.             $session->setIspName($ipApi->getIsp());
  578.             $session->setCoordinate($ipApi->getCoordinate());
  579.             $session->setTimeZone($ipApi->getTimeZone());
  580.             $session->setCity($ipApi->getCity());
  581.             $session->setState($ipApi->getState());
  582.             $session->setCountry($ipApi->getCountry());
  583.             $session->setIsAdmin(UserEnum::YES);
  584.             $session->setUserAgent($request->headers->get('User-Agent'));
  585.             $errors $this->validateEntity($session);
  586.             if($errors){
  587.                 return $this->eadResponse($errorsErrorEnum::FIELD_EMPTY);
  588.             }
  589.             
  590.             if($sessionOld){
  591.                 $session->setPermission($sessionOld->getPermission());
  592.                 $session->setToken($sessionOld->getToken());
  593.                 $sessionOld->delete();
  594.                 $time time() + (24 60 60);
  595.                 if($userOrigin->getId() != UserEnum::YES){
  596.                     if($this->generalService->getCookie('remember') == SessionEnum::YES){
  597.                         $time null;
  598.                     }
  599.                 }
  600.                 
  601.                 $this->generalService->setCookie(
  602.                     'sessiontoken'
  603.                     $session->getToken(), 
  604.                     $time
  605.                 );
  606.             }
  607.             $this->em->persist($session);
  608.             $this->em->flush();
  609.             /*return $this->eadResponse([ 
  610.                 "token" => $session->getToken(), 
  611.                 "userId" => $userOrigin->getId() 
  612.             ]);*/
  613.         }
  614.         $this->em->flush();
  615.         return $this->redirectToRoute('home');
  616.     }
  617.     /**
  618.      * @Route(
  619.      *      path          = "/logoff",
  620.      *      name          = "logoff",
  621.      *      methods       = {"GET"},
  622.      * )
  623.      */
  624.     public function logoff(Request $request) {
  625.         if($this->user){
  626.             $sessionOn $this->user->getSession();
  627.             if($sessionOn){
  628.                 $sessionOn->delete();
  629.                 $this->configuration->getSessionSym()->set('session'null);
  630.                 $this->em->flush();
  631.                 $this->generalService->deleteCookie('remember');
  632.                 $this->generalService->deleteCookie('sessiontoken');
  633.                 $this->generalService->logoffWS(
  634.                     $sessionOn,
  635.                     $this->clientConfig->getId()
  636.                 );
  637.             }
  638.         }
  639.         return $this->redirectToRoute('home');
  640.     }
  641. }