Hi,
ich habe das gleiche Problem.
Ich suche eine Lono-DB, mit der man Urlaub/Verfügbarkeit von ein paar Mitarbeitern verwalten kann.
Aus den o.a. Links/Tips bin ich nicht schlau geworden
bzw. habe nichts gefunden.
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 SubVon 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 SubDas 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 SubDabei kommt immer "Objektvariable nicht gesetzt".