Author: david
Date: Fri Oct 23 14:53:00 2009
New Revision: 3816

Log:
Always return true from ACL permission condition when matching parameter is 
null.  Fixes issue #1091.

Modified:
   trunk/plugins/qbAclPlugin/lib/QubitAcl.class.php
   trunk/plugins/qbAclPlugin/lib/model/QubitAclPermission.php

Modified: trunk/plugins/qbAclPlugin/lib/QubitAcl.class.php
==============================================================================
--- trunk/plugins/qbAclPlugin/lib/QubitAcl.class.php    Fri Oct 23 14:45:57 
2009        (r3815)
+++ trunk/plugins/qbAclPlugin/lib/QubitAcl.class.php    Fri Oct 23 14:53:00 
2009        (r3816)
@@ -63,6 +63,11 @@
         {
           $options['parameters']['repositoryId'] = $repository->id;
         }
+        else
+        {
+          $options['parameters']['repositoryId'] = null;
+        }
+
         $hasAccess = self::allowAccess($user, $aco, $actionId, $options);
         break;
 

Modified: trunk/plugins/qbAclPlugin/lib/model/QubitAclPermission.php
==============================================================================
--- trunk/plugins/qbAclPlugin/lib/model/QubitAclPermission.php  Fri Oct 23 
14:45:57 2009        (r3815)
+++ trunk/plugins/qbAclPlugin/lib/model/QubitAclPermission.php  Fri Oct 23 
14:53:00 2009        (r3816)
@@ -88,15 +88,24 @@
     // Substitute parameters
     if (preg_match_all('/%p\[(\w+)\]/', $conditional, $matches))
     {
-      foreach ($matches[1] as $match)
+      foreach ($matches[1] as $key)
       {
-        if (isset($parameters[$match]))
+        if (array_key_exists($key, $parameters))
         {
-          $conditional = str_replace('%p['.$match.']', 
'\''.$parameters[$match].'\'', $conditional);
+          // A 'null' parameter matches *any* constant
+          if (null === $parameters[$key])
+          {
+            $conditional = str_replace('%p['.$key.']', 'true', $conditional);
+            $conditional = str_replace('%k['.$key.']', 'true', $conditional);
+          }
+          else
+          {
+            $conditional = str_replace('%p['.$key.']', 
'\''.$parameters[$key].'\'', $conditional);
+          }
         }
         else
         {
-          $conditional = str_replace('%p['.$match.']', '\'0\'', $conditional);
+          $conditional = str_replace('%p['.$key.']', '\'0\'', $conditional);
         }
       }
     }

--~--~---------~--~----~------------~-------~--~----~
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.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to