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


Reply via email to