Beiträge von lono007

    Wunderbar!
    Wie "helmie" es beschrieben hast, funktioniert es jetzt auch ohne das das Dokument vorher angezeigt wird.


    Mag sein, das es mit Lesefeldern besser zu realisieren ist, aber damit habe ich noch keine Erfahrungen.


    Trotzdem Danke an alle !!!

    Jetzt habe ich eine komplette Lösung für mein Problem:
    (für alle, die ein komplettes Beispiel suchen)


    In der Zugriffsliste den Nutzern Rollen zuordnen.
    z.B. "externeMitarbeiter" für Personen, die nicht alle Dokumente lesen können sollen.


    In der Maske ein Feld "Hidden" erzeugen, mit dem man als Optionsschaltfläche
    den Wert zwischen "erlaubt" und "gesperrt" wechseln kann.


    Dieses Feld wird bei folgender Formel ausgeblendet:
    @IsMember("[externeMitarbeiter]";@UserRoles)


    So können nur "interne" Mitarbeiter diesen Wert ändern.


    Damit beim Aufruf des Dokumentes die Rollenzugehörigkeit überprüft werden kann,
    in "Postopen" folgende Zeilen einfügen:


    Sub Postopen(Source As Notesuidocument)
    Dim ws As New notesuiworkspace
    Dim db As NotesDatabase
    Dim session As New NotesSession
    Dim uidoc As Notesuidocument
    Dim acl As NotesACL
    Dim entry As NotesACLEntry
    Set db = session.CurrentDatabase
    Set uidoc = ws.currentdocument
    Set acl = db.ACL
    Set entry = acl.GetEntry(session.UserName)
    If (entry.IsRoleEnabled("externeMitarbeiter") And uidoc.FieldGetText("Hidden")="gesperrt") Then
    Messagebox("Sie besitzen nicht die nötige Rolle, um diese Dokument zu lesen.")
    Call uidoc.Close
    End If
    End Sub


    Von Nachteil ist vieleicht noch, das man das Dokument erstmal angezeigt bekommt. Wenn also
    doch "sensible" Inhalte im Dokument stehen, dann kann man die erstmal sehen, bis man das
    Dialogfenster (und damit auch das Dokument) wieder schliesst.
    Da bei meinem Fall aber alle "sensiblen" Inhalte in Dateianhängen vorliegt, geht es auch so.

    Hi,
    genau diesen Tip habe ich gebraucht.
    Wenn ich die Sache über das Feld vom Typ "Leser" realisiere,
    kann ich mir den Rest sparen.
    Genauso mach ich es!
    Trotzdem würde mich noch interessieren, wie ich über LScript herausbekomme, welcher Rolle der gerade aktive Nutzer zugeordnet ist (also wie bei @UserRoles).
    In der Designer-Hilfe finde ich keinen Verweis von den @-Funktionen auf gleichwertige LScript-Funktionen.
    Vielen Dank.

    Danke für die schnelle Antwort.
    Habe garade auch herausgefunden, das es mit "Postopen" funktioniert:


    Sub Postopen(Source As Notesuidocument)
    Dim ws As New notesuiworkspace
    Dim uidoc As Notesuidocument
    Set uidoc = ws.currentdocument
    If(uidoc.FieldGetText("Hidden")="gesperrt") Then
    Msgbox "Sie sind zur Anzeige dieses Dokumentes NICHT berechtigt.",,"Zugriff verweigert"
    Call uidoc.Close
    End If
    End Sub


    Das Optionsfeld zur Angabe ob gesperrt oder erlaubt habe ich mit der Formel
    @IsMember("[Fremdmitarbeiter]";@UserRoles)
    ausgeblendet, damit nur "berechtigte" Nutzer dieses Feld ändern können.
    Nun ist mein letztes Problem, wie bekomme ich die Informationen der @-Funktion in LotusScript realisiert?


    zur Information:
    Die Dokumente haben meist keinen (oder nicht viel) Text. Die sensiblen Inhalte liegen in Anhängen.
    Deshalb reicht es mir eigentlich aus, wenn die "nicht berechtigten" Nutzer die Anhänge nicht öffnen können.


    >>> Besser wäre in diesem Fall die Dokumente mit einem Leserfeld zu versehen.
    >>> Dann werden die Dokumente nur noch den Leuten angezeigt, die der entsprechenden Rolle zugeordnet sind.
    Das mit dem Lesefeld habe ich nicht ganz verstanden.
    Ich kenne nur die Möglichkeit, über "Eigenschaften > Dokument > Sicherheit > wer kann dieses Dok. lesen" die Leserechte
    einzuschränken.
    Ich möchte aber den "berechtigten" Nutzern die Möglichkeit geben, aus der Maske heraus dieses Lesefeld zu setzten/löschen.

    Hi,
    für den Zugriff auf eine DB habe ich den Nutzern Rollen zugeordnet.
    Nun möchte ich, das man für jedes Dokument angeben kann,
    ob Nutzer einer bestimmten Rolle dieses Dokument öffnen können.


    Hat jemand eine Idee, wie das so einfach wie möglich zu realisieren ist?


    Meine Idee:
    in der Maske ein Optionsfeld definieren, mit dem man den Zugriff
    für diese Gruppe sperren kann.
    Dieses Optionsfeld wird nur den Leuten angezeigt, die NICHT in der "gesperrten" Rolle sind.
    Beim öffnen des Dokumentes wird dann die Rollenzuordnung geprüft und evtl. die Öffnung abgebrochen.
    Nun muß ich nur noch wissen, wie man den Wert eines Feldes im aktuellen Dokument ausließt - und da stoße ich an meine Grenzen.


    Sub Initialize
    Dim ws As New notesuiworkspace
    Dim uidoc As Notesuidocument
    Set uidoc = ws.currentdocument
    Dim inhalt as string
    inhalt=uidoc.FieldGetText("Hidden")
    End Sub


    Dabei kommt immer "Objektvariable nicht gesetzt".