/** * Connect */ public function connect($variables) { if (!craft()->httpSession->get('oauth.response')) { // we don't have any response yet, get ready to connect // clean session $this->_sessionClean(); // get provider $provider = craft()->oauth->getProvider($variables['provider']); // referer if (!empty($variables['referer'])) { $referer = $variables['referer']; } else { $referer = craft()->request->getUrl(); } craft()->httpSession->add('oauth.referer', $referer); // scope if (!empty($variables['scope'])) { $scope = $variables['scope']; } else { $scope = []; } craft()->httpSession->add('oauth.scope', $scope); // authorizationOptions if (!empty($variables['authorizationOptions'])) { $authorizationOptions = $variables['authorizationOptions']; } else { $authorizationOptions = []; // $authorizationOptions = $provider->getauthorizationOptions(); } craft()->httpSession->add('oauth.authorizationOptions', $authorizationOptions); // redirect url $redirectUrl = UrlHelper::getActionUrl('oauth/connect/', array('provider' => $variables['provider'])); OauthPlugin::log('Redirect to OAuth Connect' . "\r\n" . 'Redirect to: ' . $redirectUrl . "\r\n" . 'Session Data: ' . print_r(['oauth.referer' => $referer, 'oauth.scope' => $scope, 'oauth.authorizationOptions' => $authorizationOptions], true) . "\r\n", LogLevel::Info); // redirect craft()->request->redirect($redirectUrl); } else { // populate token object from response $response = craft()->httpSession->get('oauth.response'); craft()->httpSession->remove('oauth.response'); OauthPlugin::log('OAuth Connect - Retrieve token from response' . "\r\n" . 'Session Data: ' . print_r(['oauth.response' => $response], true) . "\r\n", LogLevel::Info); if ($response['token']) { // response token to token model $token = new Oauth_TokenModel(); $provider = $this->getProvider($variables['provider']); if ($provider) { switch ($provider->getOauthVersion()) { case 1: if (!empty($response['token']['identifier'])) { $token->accessToken = $response['token']['identifier']; } if (!empty($response['token']['secret'])) { $token->secret = $response['token']['secret']; } break; case 2: if (!empty($response['token']['accessToken'])) { $token->accessToken = $response['token']['accessToken']; } if (!empty($response['token']['endOfLife'])) { $token->endOfLife = $response['token']['endOfLife']; } if (!empty($response['token']['refreshToken'])) { $token->refreshToken = $response['token']['refreshToken']; } break; } } $token->providerHandle = $variables['provider']; $token->pluginHandle = $variables['plugin']; OauthPlugin::log('OAuth Connect - Token' . "\r\n" . print_r(["Token: \r\n" . print_r($token->getAttributes(), true)], true), LogLevel::Info); $response['token'] = $token; } $this->_sessionClean(); return $response; } }