You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by ch...@apache.org on 2009/07/28 11:07:49 UTC

svn commit: r798455 - in /incubator/shindig/trunk/php/src/gadgets: GadgetFactory.php MakeRequestHandler.php SigningFetcher.php render/GadgetHrefRenderer.php

Author: chabotc
Date: Tue Jul 28 09:07:49 2009
New Revision: 798455

URL: http://svn.apache.org/viewvc?rev=798455&view=rev
Log:
SHINDIG-1130 by Matthieu Huguet - Add support for sign_viewer and sign_owner in Preloads, makeRequest and proxied content

Modified:
    incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php
    incubator/shindig/trunk/php/src/gadgets/MakeRequestHandler.php
    incubator/shindig/trunk/php/src/gadgets/SigningFetcher.php
    incubator/shindig/trunk/php/src/gadgets/render/GadgetHrefRenderer.php

Modified: incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php?rev=798455&r1=798454&r2=798455&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/GadgetFactory.php Tue Jul 28 09:07:49 2009
@@ -195,33 +195,46 @@
       if (($locale['country'] == 'all' && $locale['lang'] == 'all') || ($locale['lang'] == $contextLocale['lang'] && $locale['country'] == 'all') || ($locale['lang'] == $contextLocale['lang'] && $locale['country'] == $contextLocale['country'])) {
         if (!empty($locale['messages'])) {
           // locale matches the current context, add it to the requests queue
-          $unsignedRequests[] = $locale['messages'];
+	  $request = new RemoteContentRequest($locale['messages']);
+	  $request->createRemoteContentRequestWithUri($locale['messages']);
+	  $request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
+          $unsignedRequests[] = $request;
         }
       } else {
         // remove any locales that are not applicable to this context
         unset($gadget->gadgetSpec->locales[$key]);
       }
     }
+
     // Add preloads to the request queue
     foreach ($gadget->getPreloads() as $preload) {
       if (!empty($preload['href'])) {
-        if (!empty($preload['authz']) && $preload['authz'] == 'SIGNED') {
-          if ($this->token == '') {
-            throw new GadgetException("Signed preloading requested, but no valid security token set");
-          }
-          $signedRequests[] = $preload['href'];
-        } else {
-          $unsignedRequests[] = $preload['href'];
-        }
+	$request = new RemoteContentRequest($preload['href']);
+	if (!empty($preload['authz']) && $preload['authz'] == 'SIGNED') {
+	  if ($this->token == '') {
+	    throw new GadgetException("Signed preloading requested, but no valid security token set");
+	  }
+	  $request = new RemoteContentRequest($preload['href']);
+	  $request->setAuthType(RemoteContentRequest::$AUTH_SIGNED);
+	  $request->setNotSignedUri($preload['href']);
+	  $request->setToken($this->token);
+	  $request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
+	  if (strcasecmp($preload['signViewer'], 'false') == 0) {
+	    $request->getOptions()->viewerSigned = false;
+	  }
+	  if (strcasecmp($preload['signOwner'], 'false') == 0) {
+	    $request->getOptions()->ownerSigned = false;
+	  }
+	  $signedRequests[] = $request;
+	} else {
+	  $request->createRemoteContentRequestWithUri($preload['href']);
+	  $request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
+	  $unsignedRequests[] = $request;
+	}
       }
     }
+
     // Perform the non-signed requests
-    foreach ($unsignedRequests as $key => $requestUrl) {
-      $request = new RemoteContentRequest($requestUrl);
-      $request->createRemoteContentRequestWithUri($requestUrl);
-      $request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
-      $unsignedRequests[$key] = $request;
-    }
     $responses = array();
     if (count($unsignedRequests)) {
       $brc = new BasicRemoteContent();
@@ -233,14 +246,6 @@
       }
     }
     // Perform the signed requests
-    foreach ($signedRequests as $key => $requestUrl) {
-      $request = new RemoteContentRequest($requestUrl);
-      $request->setAuthType(RemoteContentRequest::$AUTH_SIGNED);
-      $request->setNotSignedUri($requestUrl);
-      $request->setToken($this->token);
-      $request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
-      $signedRequests[$key] = $request;
-    }
     if (count($signedRequests)) {
     	$signingFetcherFactory = new SigningFetcherFactory(Config::get("private_key_file"));
       $remoteContent = new BasicRemoteContent(new BasicRemoteContentFetcher(), $signingFetcherFactory);

Modified: incubator/shindig/trunk/php/src/gadgets/MakeRequestHandler.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/MakeRequestHandler.php?rev=798455&r1=798454&r2=798455&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/MakeRequestHandler.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/MakeRequestHandler.php Tue Jul 28 09:07:49 2009
@@ -93,6 +93,12 @@
     $basicRemoteContent = new BasicRemoteContent($basicFetcher, $this->signingFetcherFactory, $signer);
     $request = $this->buildRequest($url, $method, $signer);
     $request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
+    if (! empty($_REQUEST['signViewer']) && $_REQUEST['signViewer'] == 'false') {
+      $request->getOptions()->viewerSigned = false;
+    }
+    if (! empty($_REQUEST['signOwner']) && $_REQUEST['signOwner'] == 'false') {
+      $request->getOptions()->ownerSigned = false;
+    }
     return $basicRemoteContent->fetch($request);
   }
 

Modified: incubator/shindig/trunk/php/src/gadgets/SigningFetcher.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/SigningFetcher.php?rev=798455&r1=798454&r2=798455&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/SigningFetcher.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/SigningFetcher.php Tue Jul 28 09:07:49 2009
@@ -145,7 +145,7 @@
       if ($signBody && isset($postParams)) {
         $msgParams = array_merge($msgParams, $postParams);
       }
-      $this->addOpenSocialParams($msgParams, $request->getToken());
+      $this->addOpenSocialParams($msgParams, $request->getToken(), $request->getOptions()->ownerSigned, $request->getOptions()->viewerSigned);
       $this->addOAuthParams($msgParams, $request->getToken());
       $consumer = new OAuthConsumer(NULL, NULL, NULL);
       $consumer->setProperty(OAuthSignatureMethod_RSA_SHA1::$PRIVATE_KEY, $this->privateKeyObject);
@@ -197,22 +197,28 @@
     }
   }
 
-  private function addOpenSocialParams(&$msgParams, SecurityToken $token) {
-    $owner = $token->getOwnerId();
-    if ($owner != null) {
-      $msgParams[SigningFetcher::$OPENSOCIAL_OWNERID] = $owner;
-    }
-    $viewer = $token->getViewerId();
-    if ($viewer != null) {
-      $msgParams[SigningFetcher::$OPENSOCIAL_VIEWERID] = $viewer;
-    }
-    $app = $token->getAppId();
-    if ($app != null) {
-      $msgParams[SigningFetcher::$OPENSOCIAL_APPID] = $app;
-    }
-    $url = $token->getAppUrl();
-    if ($url != null) {
-      $msgParams[SigningFetcher::$OPENSOCIAL_APPURL] = $url;
+  private function addOpenSocialParams(&$msgParams, SecurityToken $token, $signOwner, $signViewer) {
+    if ($signOwner) {
+      $owner = $token->getOwnerId();
+      if ($owner != null) {
+	$msgParams[SigningFetcher::$OPENSOCIAL_OWNERID] = $owner;
+      }
+    }
+    if ($signViewer) {
+      $viewer = $token->getViewerId();
+      if ($viewer != null) {
+	$msgParams[SigningFetcher::$OPENSOCIAL_VIEWERID] = $viewer;
+      }
+    }
+    if ($signOwner || $signViewer) {
+      $app = $token->getAppId();
+      if ($app != null) {
+	$msgParams[SigningFetcher::$OPENSOCIAL_APPID] = $app;
+      }
+      $url = $token->getAppUrl();
+      if ($url != null) {
+	$msgParams[SigningFetcher::$OPENSOCIAL_APPURL] = $url;
+      }
     }
   }
 

Modified: incubator/shindig/trunk/php/src/gadgets/render/GadgetHrefRenderer.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/render/GadgetHrefRenderer.php?rev=798455&r1=798454&r2=798455&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/render/GadgetHrefRenderer.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/render/GadgetHrefRenderer.php Tue Jul 28 09:07:49 2009
@@ -80,6 +80,8 @@
       $token = $gadget->gadgetContext->extractAndValidateToken($gadgetSigner);
       $request->setToken($token);
       $request->setAuthType($authz);
+      $request->getOptions()->ownerSigned = $this->getSignOwner($view);
+      $request->getOptions()->viewerSigned = $this->getSignViewer($view);
       $signingFetcherFactory = new SigningFetcherFactory(Config::get("private_key_file"));
     }
     $basicFetcher = new BasicRemoteContentFetcher();
@@ -152,4 +154,26 @@
   private function getAuthz($view) {
     return ! empty($view['authz']) ? strtolower($view['authz']) : 'none';
   }
+
+
+  /**
+   * Returns the signOwner attribute of the view (true or false, default is true)
+   *
+   * @param array $view
+   * @return string signOwner attribute
+   */
+  private function getSignOwner($view) {
+    return ! empty($view['signOwner']) && strcasecmp($view['signOwner'], 'false') == 0 ? false : true;
+  }
+
+  /**
+   * Returns the signViewer attribute of the view (true or false, default is true)
+   *
+   * @param array $view
+   * @return string signViewer attribute
+   */
+  private function getSignViewer($view) {
+    return ! empty($view['signViewer']) && strcasecmp($view['signViewer'], 'false') == 0 ? false : true;
+  }
+
 }