Author: david
Date: Mon Sep 28 16:57:27 2009
New Revision: 3577

Log:
Only list info objects in repositories for which user has access.

Modified:
   trunk/apps/qubit/modules/informationobject/actions/listAction.class.php

Modified: 
trunk/apps/qubit/modules/informationobject/actions/listAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/listAction.class.php     
Mon Sep 28 16:55:02 2009        (r3576)
+++ trunk/apps/qubit/modules/informationobject/actions/listAction.class.php     
Mon Sep 28 16:57:27 2009        (r3577)
@@ -86,6 +86,34 @@
       $query->addSubquery(new Zend_Search_Lucene_Search_Query_Term(new 
Zend_Search_Lucene_Index_Term(QubitTerm::PUBLICATION_STATUS_DRAFT_ID, 
'publicationStatusId')), false);
     }
 
+    // Filter out objects in forbidden repositories (no read access)
+    if (0 < count($deniedRepositories = 
QubitAcl::deniedRepositories($this->informationObject, 
QubitAclAction::READ_ID)))
+    {
+      // If all repositories are denied, re-route user
+      if (array('*') == $deniedRepositories)
+      {
+        if ($this->context->getUser()->isAuthenticated())
+        {
+          // Access denied
+          QubitAcl::forwardToSecureAction();
+        }
+        else
+        {
+          // Login page
+          QubitAcl::forwardToLoginAction();
+        }
+      }
+
+      $subquery1 = new Zend_Search_Lucene_Search_Query_MultiTerm();
+      foreach ($deniedRepositories as $repositoryId)
+      {
+        $subquery1->addTerm(new Zend_Search_Lucene_Index_Term($repositoryId, 
'repositoryid'));
+      }
+
+      $query = new Zend_Search_Lucene_Search_Query_Boolean(array($query));
+      $query->addSubquery($subquery1, false /* prohibited */);
+    }
+
     $this->pager = new QubitSearchPager;
     $this->pager->hits = $search->getEngine()->getIndex()->find($query);
     $this->pager->setPage($request->page);

--~--~---------~--~----~------------~-------~--~----~
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