Author: bhofmann
Date: Thu Aug 25 08:45:36 2011
New Revision: 1161442
URL: http://svn.apache.org/viewvc?rev=1161442&view=rev
Log:
Moved signing support of content type url redirects to main source package
Removed:
shindig/trunk/extras/src/main/php/extras/GadgetUrlAuthRenderer.php
Modified:
shindig/trunk/php/src/gadgets/render/GadgetUrlRenderer.php
Modified: shindig/trunk/php/src/gadgets/render/GadgetUrlRenderer.php
URL:
http://svn.apache.org/viewvc/shindig/trunk/php/src/gadgets/render/GadgetUrlRenderer.php?rev=1161442&r1=1161441&r2=1161442&view=diff
==============================================================================
--- shindig/trunk/php/src/gadgets/render/GadgetUrlRenderer.php (original)
+++ shindig/trunk/php/src/gadgets/render/GadgetUrlRenderer.php Thu Aug 25
08:45:36 2011
@@ -65,7 +65,39 @@ class GadgetUrlRenderer extends GadgetRe
} else {
$redirURI = $redirURI . '?' . $query;
}
-
+
+ $authz = $this->getAuthz($view);
+
+ if ($authz === 'signed') {
+ $gadgetSigner = Config::get('security_token_signer');
+ $gadgetSigner = new $gadgetSigner();
+ $token = $gadget->gadgetContext->extractAndValidateToken($gadgetSigner);
+
+ $signingFetcherFactory = new
SigningFetcherFactory(Config::get("private_key_file"));
+
+ $redirURI .= '&xoauth_signature_publickey=' .
urlencode($signingFetcherFactory->getKeyName());
+ $redirURI .= '&xoauth_public_key=' .
urlencode($signingFetcherFactory->getKeyName());
+
+ if ($this->getSignOwner($view)) {
+ $redirURI .= '&opensocial_owner_id=' . urlencode($token->getOwnerId());
+ }
+ if ($this->getSignViewer($view)) {
+ $redirURI .= '&opensocial_viewer_id=' .
urlencode($token->getViewerId());
+ }
+
+ $redirURI .= '&opensocial_app_url=' . urlencode($token->getAppUrl());
+ $redirURI .= '&opensocial_app_id=' . urlencode($token->getAppId());
+ $redirURI .= '&opensocial_instance_id=' .
urlencode($token->getModuleId());
+
+ $consumer = new OAuthConsumer(NULL, NULL, NULL);
+ $signatureMethod = new
ShindigRsaSha1SignatureMethod($signingFetcherFactory->getPrivateKey(), null);
+ $req_req = OAuthRequest::from_consumer_and_token($consumer, NULL, 'GET',
$redirURI);
+ $req_req->sign_request($signatureMethod, $consumer, NULL);
+ $redirURI = $req_req->to_url();
+
+
+ }
+
return $redirURI;
}
@@ -104,4 +136,36 @@ class GadgetUrlRenderer extends GadgetRe
}
return $ret;
}
+
+ /**
+ * Returns the authz attribute of the view, can be 'none', 'signed' or
'oauth'
+ *
+ * @param array $view
+ * @return string authz attribute
+ */
+ 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;
+ }
}
+