Completed
Push — develop ( a3d2f3...33c500 )
by Mario
06:39
created

ConnectController   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 14

1 Method

Rating   Name   Duplication   Size   Complexity  
C redirectToServiceAction() 0 37 14
1
<?php
2
3
namespace AppBundle\Controller\OAuth;
4
5
use HWI\Bundle\OAuthBundle\Controller\ConnectController as HWIConnectController;
6
use Symfony\Component\HttpFoundation\RedirectResponse;
7
use Symfony\Component\HttpFoundation\Request;
8
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
9
10
/**
11
 * Class ConnectController
12
 */
13
class ConnectController extends HWIConnectController
14
{
15
    /**
16
     * {@inheritdoc}
17
     */
18
    public function redirectToServiceAction(Request $request, $service)
19
    {
20
        try {
21
            $authorizationUrl = $this->container->get('hwi_oauth.security.oauth_utils')->getAuthorizationUrl($request, $service);
22
        } catch (\RuntimeException $e) {
23
            throw new NotFoundHttpException($e->getMessage(), $e);
24
        }
25
26
        $tenant = $this->get('ds_tenant.service.tenant')->getContext();
27
        $authorizationUrl .= urlencode('?tenant='.$tenant);
28
29
        // Check for a return path and store it before redirect
30
        if ($request->hasSession()) {
31
            // initialize the session for preventing SessionUnavailableException
32
            $session = $request->getSession();
33
            $session->start();
34
35
            foreach ($this->container->getParameter('hwi_oauth.firewall_names') as $providerKey) {
36
                $sessionKey = '_security.'.$providerKey.'.target_path';
37
                $sessionKeyFailure = '_security.'.$providerKey.'.failed_target_path';
38
39
                $param = $this->container->getParameter('hwi_oauth.target_path_parameter');
40
                if (!empty($param) && $targetUrl = $request->get($param)) {
41
                    $session->set($sessionKey, $targetUrl);
42
                }
43
44
                if ($this->container->getParameter('hwi_oauth.failed_use_referer') && !$session->has($sessionKeyFailure) && ($targetUrl = $request->headers->get('Referer')) && $targetUrl !== $authorizationUrl) {
45
                    $session->set($sessionKeyFailure, $targetUrl);
46
                }
47
48
                if ($this->container->getParameter('hwi_oauth.use_referer') && !$session->has($sessionKey) && ($targetUrl = $request->headers->get('Referer')) && $targetUrl !== $authorizationUrl) {
49
                    $session->set($sessionKey, $targetUrl);
50
                }
51
            }
52
        }
53
54
        return $this->redirect($authorizationUrl);
55
    }
56
}
57