コード例 #1
0
 public function makeRequest($method, $service, $header = array(), $body = null, $options = array())
 {
     $settings = new SBTSettings();
     $store = SBTCredentialStore::getInstance();
     $server = $settings->getURL($this->endpointName);
     if ($settings->getAuthenticationMethod($this->endpointName) == "basic") {
         $endpoint = new SBTBasicAuthEndpoint();
     } else {
         if ($settings->getAuthenticationMethod($this->endpointName) == "oauth2") {
             $endpoint = new SBTOAuth2Endpoint();
         } else {
             if ($settings->getAuthenticationMethod($this->endpointName) == "oauth1") {
                 $endpoint = new SBTOAuth1Endpoint();
             }
         }
     }
     // Make request
     $response = $endpoint->makeRequest($settings->getURL($this->endpointName), $service, $method, $options, $body, $header, $this->endpointName);
     $this->document = $response->getBody(TRUE);
     $this->_parseXML();
     return $this->document;
 }
コード例 #2
0
ファイル: Proxy.php プロジェクト: ItemConsulting/SocialSDK
 /**
  * Routes requests.
  * 
  * @param string server			The URL of the server to which to re-direct the request to. Uses SBTSettings if none given.
  */
 public function route($server = null)
 {
     $this->loadModel('SBTSettings');
     $this->loadModel('SBTCredentialStore');
     $proxyHelper = new SBTProxyHelper();
     $store = SBTCredentialStore::getInstance();
     $settings = new SBTSettings();
     $endpointName = $proxyHelper->determineEndpoint();
     if (!isset($_REQUEST["_redirectUrl"])) {
         // Request to check if the user is authenticated
         if (isset($_REQUEST["isAuthenticated"])) {
             $_REQUEST["_redirectUrl"] = '/files/basic/api/myuserlibrary/feed';
             //used to be /connections/files/basic/api/myuserlibrary/feed
             $_SERVER['REQUEST_METHOD'] = 'GET';
         } else {
             if (isset($_REQUEST["basicAuthLogout"])) {
                 // Logout request
                 $store->deleteBasicAuthCredentials($endpointName);
             }
         }
         if (isset($_REQUEST["OAuthLogout"])) {
             $store->deleteOAuthCredentials($endpointName);
             $timestamp = time();
             unset($_COOKIE['IBMSBTKOAuthLogin']);
             setcookie('IBMSBTKOAuthLogin', "", $timestamp - 604800);
             return;
         } else {
             return;
         }
         if (isset($_REQUEST["basicAuthLogout"])) {
             return;
         }
     }
     // Handle any file operations
     // If file operations exist, then control flow
     // will be interrupted and route() will be called
     // again
     if ($this->fileOperations()) {
         return;
     }
     $url = $_REQUEST["_redirectUrl"];
     $url = str_replace("/connections/", "", $url);
     if (isset($_REQUEST['basicAuthRequest']) && $_REQUEST['basicAuthRequest'] == 'true') {
         $store->storeBasicAuthUsername($_POST['username'], $endpointName);
         $store->storeBasicAuthPassword($_POST['password'], $endpointName);
         $result = array('status' => 200, 'result' => true);
         print_r(json_encode($result));
         return;
     }
     $method = $_SERVER['REQUEST_METHOD'];
     $options = $proxyHelper->getOptions();
     $response = null;
     $body = file_get_contents('php://input');
     $endpoint = null;
     if ($server == null) {
         $server = $settings->getURL($endpointName);
     }
     $method = $_SERVER['REQUEST_METHOD'];
     $forwardHeader = $proxyHelper->getHeader($method);
     if ($settings->getAuthenticationMethod($endpointName) == "basic") {
         $endpoint = new SBTBasicAuthEndpoint();
     } else {
         if ($settings->getAuthenticationMethod($endpointName) == "oauth2") {
             $endpoint = new SBTOAuth2Endpoint();
         } else {
             if ($settings->getAuthenticationMethod($endpointName) == "oauth1") {
                 $endpoint = new SBTOAuth1Endpoint();
             }
         }
     }
     $url = $proxyHelper->cleanURL($url, $server);
     // Make request
     $response = $endpoint->makeRequest($server, $url, $method, $options, $body, $forwardHeader, $endpointName);
     // Print response
     $proxyHelper->outputResponse($response, $url);
 }
コード例 #3
0
 /**
  * Constructor.
  */
 function __construct($endpointName = "connections")
 {
     $this->endpointName = $endpointName;
     $this->loadModel('SBTSettings');
     $settings = new SBTSettings();
     $authMethod = $settings->getAuthenticationMethod($endpointName);
     global $USER;
     if (isset($USER->id)) {
         setcookie('ibm-sbt-uid', $USER->id, time() + 604800);
     }
     if ($authMethod == 'oauth1') {
         // Check if we have an access token. If not, re-direct user to authentication page
         $this->loadModel('SBTCredentialStore');
         $store = SBTCredentialStore::getInstance();
         $token = $store->getRequestToken($endpointName);
         if ($token == null) {
             // Autoloader
             if (file_exists('../../../autoload.php')) {
                 include_once '../../../autoload.php';
             } else {
                 if (function_exists('plugin_dir_path')) {
                     $dir = plugin_dir_path(__FILE__);
                     include_once $dir . '../../autoload.php';
                 }
             }
             if (file_exists(BASE_PATH . '/core/controllers/endpoint/SBTOAuth1Endpoint.php')) {
                 include BASE_PATH . '/core/controllers/endpoint/SBTOAuth1Endpoint.php';
             }
             // Create endpoint
             $oauth = new SBTOAuth1Endpoint();
             // Send request to authenticate user (auth token is automatically being stored when callback method = authenticationCallback)
             // find out the domain:
             $domain = $_SERVER['HTTP_HOST'];
             // find out the path to the current file:
             $path = $_SERVER['SCRIPT_NAME'];
             // find out the QueryString:
             $queryString = $_SERVER['QUERY_STRING'];
             // put it all together:
             $protocol = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ? "https://" : "http://";
             $url = $protocol . $domain . $path . "?" . $queryString;
             $body = null;
             if (strpos(BASE_LOCATION, 'core') !== FALSE) {
                 $body = $oauth->request($url, BASE_LOCATION . '/index.php?plugin=guzzle&class=SBTOAuth1Endpoint&method=authenticationCallback', 'POST', $endpointName);
             } else {
                 $body = $oauth->request($url, BASE_LOCATION . '/core/index.php?plugin=guzzle&class=SBTOAuth1Endpoint&method=authenticationCallback', 'POST', $endpointName);
             }
             var_dump($body);
         }
     } else {
         if ($authMethod == 'oauth2') {
             // Check if we have an access token. If not, re-direct user to authentication page
             $this->loadModel('SBTCredentialStore');
             $store = SBTCredentialStore::getInstance();
             $token = $store->getOAuthAccessToken($endpointName);
             if ($token == null) {
                 // Autoloader
                 if (file_exists('../../../autoload.php')) {
                     include_once '../../../autoload.php';
                 } else {
                     if (function_exists('plugin_dir_path')) {
                         $dir = plugin_dir_path(__FILE__);
                         include_once $dir . '../../autoload.php';
                     }
                 }
                 $parameters = array('response_type' => 'code', 'client_id' => $settings->getClientId($endpointName), 'callback_uri' => $settings->getOAuth2CallbackURL($endpointName));
                 $authURL = $settings->getAuthorizationURL($endpointName) . '?' . http_build_query($parameters, null, '&');
                 if (!headers_sent()) {
                     header("Location: " . $authURL);
                 } else {
                     echo '<script type="text/javascript" language="javascript">window.location = "' . $authURL . '";</script>';
                 }
             }
         }
     }
 }
コード例 #4
0
 /**
  * Outputs the content of the widget.
  *
  * @param array $args
  * @param array $instance
  */
 public function widget($args, $instance)
 {
     $settings = new SBTSettings();
     $store = SBTCredentialStore::getInstance();
     if (isset($instance['ibm-sbtk-endpoint'])) {
         $this->endpoint = $instance['ibm-sbtk-endpoint'];
     } else {
         $this->endpoint = "connections";
     }
     if (!$this->_isUserLoggedIn()) {
         // Add && $settings->requireSignOn($this->endpoint) to enable both anon and non-anon access
         echo '<div class="widget-area" style="width: 100%;"><aside class="widget widget_recent_entries"><h3 class="widget-title">' . $this->widget_name . '</h3>';
         echo '' . $GLOBALS[LANG]['must_login'] . '</aside></div>';
         return;
     }
     // If tokens exist, make sure that they are valid. Otherwise clear the store and force the
     // user to re-log
     if (($settings->getAuthenticationMethod($this->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2') && $store->getOAuthAccessToken($this->endpoint) != null) {
         $endpoint = null;
         if ($settings->getAuthenticationMethod($this->endpoint) == "oauth2") {
             $endpoint = new SBTOAuth2Endpoint();
         } else {
             if ($settings->getAuthenticationMethod($this->endpoint) == "oauth1") {
                 $endpoint = new SBTOAuth1Endpoint();
             }
         }
         $service = '/files/basic/api/myuserlibrary/feed';
         $response = $endpoint->makeRequest($settings->getURL($this->endpoint), $service, 'GET', array(), null, null, $this->endpoint);
         if ($response->getStatusCode() == 401) {
             $store->deleteOAuthCredentials($this->endpoint);
             setcookie('IBMSBTKOAuthLogin', "", $timestamp - 604800);
             require BASE_PATH . '/core/views/oauth-login-display.php';
         }
     } else {
         $endpoint = new SBTBasicAuthEndpoint();
         $service = '/files/basic/api/myuserlibrary/feed';
         $response = $endpoint->makeRequest($settings->getURL($this->endpoint), $service, 'GET', array(), null, null, $this->endpoint);
         if ($response->getStatusCode() == 401) {
             // Delete old credentials.
             $store->deleteBasicAuthCredentials($this->endpoint);
         }
     }
     echo '<div name="ibm_sbtk_widget" class="widget-area" style="width:100%"><aside class="widget widget_recent_entries">';
     echo '<h3 class="widget-title">' . $this->widget_name . '</h3>';
     if (($settings->getAuthenticationMethod($this->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2') && $store->getOAuthAccessToken($this->endpoint) == null && (!isset($_COOKIE['IBMSBTKOAuthLogin']) || $_COOKIE['IBMSBTKOAuthLogin'] != 'yes') && !$this->_isUserLoggedIn()) {
         require BASE_PATH . '/core/views/oauth-login-display.php';
         echo '</aside></div>';
         return;
     }
     $plugin = new SBTPlugin($this->endpoint);
     if ($settings->getAuthenticationMethod($this->endpoint) == 'basic' && $store->getBasicAuthUsername($this->endpoint) != null && $store->getBasicAuthPassword($this->endpoint) != null || $settings->getAuthenticationMethod($this->endpoint) == 'oauth1' && $store->getRequestToken($this->endpoint) != null || $settings->getAuthenticationMethod($this->endpoint) == 'basic' && $settings->getBasicAuthMethod($this->endpoint) == 'global' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2' && $store->getOAuthAccessToken($this->endpoint) != null) {
         require $this->widget_location;
     }
     if ($settings->getAuthenticationMethod($this->endpoint) == 'basic' && $settings->getBasicAuthMethod($this->endpoint) == 'prompt' && $store->getBasicAuthPassword($this->endpoint) == null) {
         require_once BASE_PATH . '/views/basic-auth-login-display.php';
     } else {
         if ($settings->getAuthenticationMethod($this->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2') {
             // 			require_once BASE_PATH . '/views/oauth-logout-display.php'; TODO: Uncomment when OAuth logout has been fixed
         }
     }
     echo '</aside></div>';
 }