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;
+ }
+
}