Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: robertpp am 07.06.04 - 11:26:11
-
Ich hab eine db wo ich im Doc eine Autorenfeld habe das sich beim erstellen Berechtenet:
@UserName : "[admin]" : "[FE]"
So nun möchte ich haben das nur der User der das Doc erstellt hat auch löschen darf. Aber die User mit der Rolle [FE] müssten das Doc bearbeiten können (aber nicht löschen). Das Problem dabei ist das der User der das Doc erstellt hat, auch in der Rolle [FE] ist. In der ACL steht nur die Gruppe FE als Autor mit Löschrechten. aber keine einzelnen Personen.
Wie kann ich das realiseirensieren?
Ich hab es mal so Probiert aber was ist wenn jemand mehrer doc's auswählt?
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim s As New NotesSession
Dim dc As NotesDocumentCollection
Set dc = Source.Documents
Set doc = dc.GetFirstDocument
Do Until doc Is Nothing
If s.UserName= doc.createBy(0) Then
Continue = True
Exit Sub
End If
Set doc = dc.GetNextDocument(doc)
Loop
Msgbox "You don't have permission to delete this document.", 0 + 16, "No Access"
Continue = False
End Sub
-
Du musst alle Dokumente der Collection prüfen. Falls der User mindestens ein Dokument nicht erstellt hat: Meldung und Abbruch
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim s As New NotesSession
Dim dc As NotesDocumentCollection
dim loeschen_ok as integer
loeschen_ok = true
Set dc = Source.Documents
Set doc = dc.GetFirstDocument
Do Until doc Is Nothing
If s.UserName <> doc.createBy(0) Then
loeschen_ok = false
exit do
End If
Set doc = dc.GetNextDocument(doc)
Loop
if not loeschen_ok then
Msgbox "You don't have permission to delete this document.", 0 + 16, "No Access"
Continue = False
exit sub
end if
End Sub
Andreas
-
...
If s.UserName <> doc.createBy(0) Then
...
Hi,
die Lösung von Glombi ist prinzipiell richtig, setzt aber voraus, dass der Username des Erstellers immer an erster Stelle des Feldes steht (siehe obige Zeile). Sonst geht die IF-Abfrage "in die Hose".
Wenn du ganz sicher gehen willst, legst du zwei Autorenfelder an. Das eine enthält den Ersteller und das andere die Rollen.
Axel
-
Warum mein Autorenfeld ist ja berechnet beim Anlegen mit dieser Formel:
@UserName : "[admin]" : "[FE]"
Also passt es eigentlich immer.
Das mit dem 2 Feld wäre natürlich auch gegangen aber ich probiere es immer mit so wenig Felder wie möglich.
Aber danke nochmal.
Ich hab das ganze ein wenig modifiziert:
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim s As New NotesSession
Dim dc As NotesDocumentCollection
Dim loeschen_ok As Integer
loeschen_ok = False
If RoleEnabled("[admin]") Then
Continue = True
Exit Sub
Elseif RoleEnabled("[FE]") Then
Set dc = Source.Documents
Set doc = dc.GetFirstDocument
Do Until doc Is Nothing
If s.UserName <> doc.createBy(0) Then
loeschen_ok = False
Exit Do
Else
loeschen_ok = True
End If
Set doc = dc.GetNextDocument(doc)
Loop
End If
If Not loeschen_ok Then
Msgbox "You don't have permission to delete this document.", 0 + 16, "No Access"
Continue = False
Exit Sub
End If
End Sub