container = $serviceContainer; $this->securityTokenStorage = $serviceContainer->get('security.token_storage'); $this->client_id = $client_id; $this->client_secret = $client_secret; $this->access_token_url = $access_token_url; } /** * @param GetResponseEvent $event * * @return type */ public function onKernelRequest(GetResponseEvent $event) { if (!$event->isMasterRequest()) { return; } try { // Autologin por GET parameters $request = $event->getRequest(); $authorizationUrl = $this->container->get('hwi_oauth.security.oauth_utils')->getAuthorizationUrl($request, 'login'); $username = $request->query->get('username'); $plainPassword = $request->query->get('password'); if ($username && $plainPassword) { $event->setResponse(new RedirectResponse($authorizationUrl . "&username={$username}&password={$plainPassword}")); return; } } catch(\Exception $ex) { } $token = $this->securityTokenStorage->getToken(); if ($token && method_exists($token, 'isExpired') && $token->isExpired()) { $parameters = array( 'refresh_token' => $token->getRefreshToken(), 'grant_type' => 'refresh_token', 'client_id' => $this->client_id, 'client_secret' => $this->client_secret ); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $this->access_token_url . '?' . http_build_query($parameters, '', '&') )); $response = curl_exec($curl); curl_close($curl); $newToken = json_decode($response, true); if (isset($newToken['access_token']) && isset($newToken['refresh_token']) && isset($newToken['expires_in'])) { $token->setAccessToken($newToken['access_token']); $token->setRefreshToken($newToken['refresh_token']); $token->setExpiresIn($newToken['expires_in']); $this->securityTokenStorage->setToken($token); } } return; } }