2013-03-22 2 views
0

Я уверен, что это невозможно, но я все равно спрошу.Xpages: Поиск документов У меня нет доступа к

Я строю систему, которая обрабатывает записи пациентов. Новый пользователь должен иметь возможность искать пациента и однажды найти запрос доступа к своим файлам из Admin.

Как показать список всех документов, даже если у пользователя нет доступа к ним? Они появляются только в представлении после того, как они были добавлены в поле «Читатели», что наносит ущерб цели поиска.

Мой план заключается в создание 2 документов - оригинал документа пациента и урезанный документ, содержащий имя, адрес используется только для поиска

Есть ли лучший способ сделать это, или это 2 документа приближается к путь?

ответ

4

Используйте sessionAsSigner для получения объекта базы данных по правам подписчика базы данных и выполните поиск на нем. Это даст вам набор документов, которые можно визуализировать аналогично представлению с использованием таблицы данных.

Пример (для умеренных взглядов отлично работает - для более крупных, вероятно, некоторые optymalization будет необходимо):

<xp:panel id="viewPanel" styleClass="usersPanel"> 
    <xp:this.dataContexts> 
     <xp:dataContext var="usersList"> 
      <xp:this.value><![CDATA[#{javascript:    
var uview = sessionAsSigner.getCurrentDatabase().getView("someView"); 
uview.FTSearch("Some query"); 
return uview.getAllEntries(); 
}]]></xp:this.value> 
     </xp:dataContext> 
    </xp:this.dataContexts> 
    <xp:pager partialRefresh="true" layout="Previous Group Next" 
     xp:key="headerPager" id="pager2" for="usersList"> 
    </xp:pager> 
    <xp:dataTable id="usersList" rows="30" 
     var="entry" value="#{usersList}"> 

     <xp:column id="column1"> 
      <xp:this.facets> 
       <xp:span xp:key="header" 
        styleClass="frameworkViewColumnHeader"> 
        Użytkownik 
       </xp:span> 
      </xp:this.facets> 
      <xp:text escape="true" id="computedField1" 
       value="#{javascript:entry.getColumnValues().get(0)}"> 
      </xp:text> 
     </xp:column> 
     <xp:column id="column2"> 
      <xp:this.facets> 
       <xp:span xp:key="header" 
        styleClass="frameworkViewColumnHeader"> 
        Instytucja 
       </xp:span> 
      </xp:this.facets> 
      <xp:text escape="true" id="computedField2" 
       value="#{javascript:entry.getColumnValues().get(1)}"> 
      </xp:text> 
     </xp:column> 
    </xp:dataTable> 
</xp:panel> 
+0

после обыска, затем пользователь имеет доступ к документам, или же это регулируется ACL как обычно? – brtweed

+0

Права подписываются только на время поиска и рендеринга таблицы данных. Доступ к документам, когда, например, он попытается открыть их, будет регулироваться ACL –

+0

Большое спасибо. Таким образом, источником данных для таблицы будет - sessionAsSigner.getDatabase (session.getServerName(), session.getCurrentDatabase(). GetFilePath()). GetView ("VIEW NAME") ?? – brtweed

Смежные вопросы