Search code examples
securitylotus-noteslotus-dominolotus

Securing Hidden Views in Lotus Notes


In Lotus Notes hidden client, hidden views are not shown by default but you can further hide them by using outlines.

But a user can gain access to hidden views by following either of the following

  • Right click on the database bookmark, "Application" -> "Go To" while holding CTRL+SHIFT
  • User opens database and goes to "View" menu and click on "Go To" while holding CTRL+SHIFT

In these scenarios users can see any hidden views or views which are only hidden on the outline.

Is there any way to hide those views aside from creating a reader list for each view?


Solution

  • Assuming that you do not require the documents in the view to be hidden. Ben's response is quite good. But I am not a big fan of Reader lists in view designs, even if you're using ACL roles to manage them. Reader view lists are notoriously hard to maintain, and easily overlooked later when debugging user issues.

    If you want to prevent UI access to the view but still permit the user access to the documents via the application programmatically, you will need to goto the view's "QueryOpen" event in the Domino Designer and insert the the following code.

    Sub Queryopen(Source As Notesuiview, Continue As Variant)
        messageBox "Not authorised to access this view"
        Continue = false
    End Sub
    

    This should prevent a user opening the view via the UI as you described, but allow the application to use it where required. And if so desired later on, you can programmatically control when those views can be access by the UI. I have had a couple of instances where I have had to create control objects that determine which type of user can open/paste documents into a view.

    My answer is on the basis you just want to prevent people accessing views. But if you need to actually hide the documents in the view, then you need to consider document level security, and then design your application around that. Admittedly, this will increase the complexity of the application because, if required, you'll need to use agents to run on someone else's behalf in order to act on the documents the user can't see.