Xpages:搜索我无权访问的文档

时间:2013-03-22 10:15:52

标签: security xpages

我很确定这是不可能的,但无论如何我都会问。

我正在建立一个处理病历的系统。新用户需要能够搜索患者,并且一旦找到请求就可以从管理员访问他们的文件。

即使用户无权访问,我如何显示所有文档的列表?它们只有在添加到“读者”字段后才会出现在视图中,这会使搜索失败。

我的计划是创建2个文档 - 原始患者文档和包含名称的精简文档,仅用于搜索的地址

有没有更好的方法可以做到这一点,或者2文档的方法是什么?

1 个答案:

答案 0 :(得分: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>