src/Centralstage/SecurityBundle/Controller/SecurityController.php line 29

Open in your IDE?
  1. <?php
  2. // src/Centralstage/SecurityBundle/Controller/SecurityController.php
  3. namespace App\Centralstage\SecurityBundle\Controller;
  4. use App\Centralstage\CoreBundle\Models\DefaultModel;
  5. use App\Centralstage\CoreBundle\Service\AuthenticationService;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use App\Centralstage\CoreBundle\Controller\AbstractedController;
  12. use App\Centralstage\CoreBundle\Models\UsersModel;
  13. use App\Centralstage\DemoModuleBundle\Models\DemoModuleModel;
  14. use App\Centralstage\SecurityBundle\Models\SSOAuditModel;
  15. use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use TheNetworg\OAuth2\Client\Provider\Azure;
  18. class SecurityController extends AbstractedController
  19. {
  20.      /**
  21.      * @Route("/login", name="login")
  22.      */
  23.     public function login(Request $request){
  24.         /* If user is already authenticated, redirect him to the default landing page */
  25.         $authDetails =  unserialize($this->session->get('authDetails'));
  26.         $error      $request->query->get('error');
  27.         $success    $request->query->get('success');
  28.         $showDemoModuleBtn$_ENV["SHOW_DEMO_MODULE"] ?? false;
  29.         $demoModuleURL    $_ENV["DEMO_MODULE_URL"] ?? false;
  30.         if ($authDetails != null) {
  31.             $userEmail $authDetails["userEmail"];
  32.             $getUserList UsersModel::getUserByEmail($this->doctrine,$userEmail);
  33.             if($getUserList){
  34.                 return $this->redirect($this->generateUrl('home'));
  35.             }
  36.         }
  37.         
  38.         $ipAddress      $request->getClientIp();
  39.         $ipExpiryTime      DefaultModel::getExpiryTime($this->doctrine,$ipAddress);
  40.         if(!$ipExpiryTime){
  41.             DefaultModel::insertIP($this->doctrine,$ipAddress,0,0,0,0);
  42.             $ipExpiryTime      DefaultModel::getExpiryTime($this->doctrine,$ipAddress);
  43.         }
  44.         if($ipExpiryTime["remainingTime"] > && $ipExpiryTime["remainingTime"] != null){
  45.             return $this->render('@CentralstageCore/default/ipblock.html.twig');
  46.         }else{       
  47.             AuthenticationService::logoutUser($request$this->doctrine);
  48.             $response = new Response();
  49.             $response->headers->clearCookie('authDetails');
  50.             $response->headers->clearCookie('pageTheme');
  51.             $response->headers->clearCookie('userID');
  52.             $response->sendHeaders();
  53.             if($showDemoModuleBtn){
  54.                 $availableModules   DemoModuleModel::getAllDemoModuleList($this->doctrine);
  55.                 return $this->render('@CentralstageSecurity/accounts/loginWithDemo.html.twig',array('theme' => 'lightTheme','error' => $error,'success' => $success'modulesDetails' => $availableModules"demoModuleURL"=>$demoModuleURL));
  56.             }
  57.             return $this->render('@CentralstageSecurity/accounts/login.html.twig',array('theme' => 'lightTheme','error' => $error,'success' => $success,"showDemoModuleBtn"=>$showDemoModuleBtn));
  58.         }
  59.     }
  60.     public function getLandingUrl($userRoleID){
  61.         switch ($userRoleID) {
  62.             default:
  63.                 return $this->generateUrl('home');
  64.         }
  65.     }
  66.     /**
  67.      * @Route("/logout", name="logout")
  68.      */
  69.     public function logout(Request $request){
  70.         AuthenticationService::logoutUser($request$this->doctrine);
  71.         $response = new Response();
  72.         $response->headers->clearCookie('authDetails');
  73.         $response->headers->clearCookie('pageTheme');
  74.         $response->headers->clearCookie('userID');
  75.         $response->sendHeaders();
  76.         return $this->redirect($this->generateUrl('login'));
  77.     }
  78.     /**
  79.      * @Route("/connect/azure", name="connect_azure_start")
  80.      */
  81.     public function connectAction(ClientRegistry $clientRegistry): RedirectResponse
  82.     {
  83.         return $clientRegistry->getClient('azure')->redirect([], []);
  84.     }
  85.     /**
  86.      * @Route("/sso/callback", name="sso_callback")
  87.      */
  88.     public function ssocallback(Request $requestClientRegistry $clientRegistry,Azure $azureProvider)
  89.     {
  90.         return $this->redirectToRoute('home');
  91.     }
  92.     /**
  93.      * @Route("/sso/consent-success", name="sso_consent_success")
  94.      */
  95.     public function ssoconsentsuccess(Request $request)
  96.     {
  97.         $requestUri                 =  $request->getRequestUri();
  98.         $queryString                parse_url($requestUriPHP_URL_QUERY);
  99.         // Parse the query string into an associative array
  100.         parse_str($queryString$queryParams);
  101.         $orgID                      $queryParams['state'] ?? null;
  102.         if(isset($queryParams['error'])){
  103.             $activityStatus         'Failed';
  104.         }else{
  105.             $activityStatus         'Approved';
  106.         }
  107.         
  108.         SSOAuditModel::updateSSOauditLog($this->doctrine,$activityStatus,$queryString,$orgID);
  109.         return $this->redirect($this->generateUrl('home'));
  110.     }
  111. }