Author: david
Date: Fri Oct 22 11:52:48 2010
New Revision: 8383

Log:
Test publish permission against parent when creating new info object. Fixes 
issue #1822.

Modified:
   trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
   trunk/plugins/qbAclPlugin/lib/QubitInformationObjectAcl.class.php

Modified: 
trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editAction.class.php     
Fri Oct 22 10:59:27 2010        (r8382)
+++ trunk/apps/qubit/modules/informationobject/actions/editAction.class.php     
Fri Oct 22 11:52:48 2010        (r8383)
@@ -103,17 +103,19 @@
       $getParams = $this->request->getGetParameters();
       if (isset($getParams['parent']))
       {
+        $params = 
$this->context->routing->parse(Qubit::pathInfo($getParams['parent']));
+        $this->parent = $params['_sf_route']->resource;
         $this->form->setDefault('parent', $getParams['parent']);
       }
       else
       {
         // Root is default parent
-        $this->form->setDefault('parent', 
$this->context->routing->generate(null, 
array(QubitInformationObject::getById(QubitInformationObject::ROOT_ID), 
'module' => 'informationobject')));
+        $this->parent = 
QubitInformationObject::getById(QubitInformationObject::ROOT_ID);
+        $this->form->setDefault('parent', 
$this->context->routing->generate(null, array($this->parent, 'module' => 
'informationobject')));
       }
 
       // Check authorization
-      $params = 
$this->context->routing->parse(Qubit::pathInfo($this->form->parent->getValue()));
-      if (!QubitAcl::check(QubitInformationObject::getById($params['id']), 
'create'))
+      if (!QubitAcl::check($this->parent, 'create'))
       {
         QubitAcl::forwardUnauthorized();
       }
@@ -152,7 +154,7 @@
 
         $this->form->setValidator('publicationStatus', new sfValidatorString);
 
-        if (QubitAcl::check($this->resource, 'publish'))
+        if (isset($this->resource) && QubitAcl::check($this->resource, 
'publish') || !isset($this->resurce) && QubitAcl::check($this->parent, 
'publish'))
         {
           $choices = array();
           foreach 
(QubitTaxonomy::getTermsById(QubitTaxonomy::PUBLICATION_STATUS_ID) as $item)

Modified: trunk/plugins/qbAclPlugin/lib/QubitInformationObjectAcl.class.php
==============================================================================
--- trunk/plugins/qbAclPlugin/lib/QubitInformationObjectAcl.class.php   Fri Oct 
22 10:59:27 2010        (r8382)
+++ trunk/plugins/qbAclPlugin/lib/QubitInformationObjectAcl.class.php   Fri Oct 
22 11:52:48 2010        (r8383)
@@ -47,6 +47,8 @@
     {
       return $resource->parent;
     }
+
+    return $resource;
   }
 }
 

-- 
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/qubit-commits?hl=en.

Reply via email to