Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: EUWE_MAX am 09.06.04 - 11:29:24
-
Habe ein Berechtigungsproblem beim Kalendereintrag via Agent
Agent ist signiert mit "Developer"
"Developer" ist im Serverdokument Sicherheit authorisiert
Urlaubsantrag wird gestellt von A an Vorgesetzten/Bewilliger B
B bewilligt und der Agent soll in der DB von A im Kalender den Urlaub buchen, dies wird abgewiesen mangels Rechten !?
Sobald aber Bewilliger B Einlieferer in der ACL von A ist, geht der Kalendereintrag...
Kann ja nicht sein, das jeder User seine Bewilliger in seine ACL einträgt als Einlieferer....
Weiß mgl. jemand wo der Fehler / mein Unverständnis liegt ?
schönen Dank und Gruss Max
SCRIPT:
Sub Initialize
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dbmail As NotesDatabase
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim dateRange As NotesDateRange
Dim art As String
Dim tmpdate As String
Dim tmpdate2 As String
Dim datum_von As String
Dim datum_bis As String
Dim startDate As NotesDateTime
Dim endDate As NotesDateTime
Dim reg As New NotesRegistration
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = New NotesDocument( db )
doc.Form = "Urlaub"
datum_von = uidoc.FieldGetText( "datum_1" )
datum_bis = uidoc.FieldGetText( "datum_2" )
art = uidoc.FieldGetText( "art_1" )
db_name = uidoc.FieldGetText("MailDb" )
Set startDate = New NotesDateTime (datum_von)
Set endDate = New NotesDateTime(datum_bis)
reg.RegistrationServer= "Lotus1"
Set dbmail = session.GetDatabase("Lotus1/Org",db_name,False)
Set doc = dbmail.CreateDocument
doc.Form = "Appointment"
doc.subject = art + " vom " + datum_von + " bis " + datum_bis
doc.AppointmentType="2"
Set dateRange = session.CreateDateRange
tmpDate = datum_von + " 04:00:00"
tmpDate2 = datum_bis + " 23:59:59"
Set ndt_datum_von = New NotesDateTime(tmpDate)
Set ndt_datum_bis = New NotesDateTime(datum_bis + " 23:59:59")
Dim ndt_CalendarDateTime As Variant
Redim ndt_CalendarDateTime(0)
ndt_CalendarDateTime(0) = ndt_datum_von.LSLocalTime
Call ndt_datum_von.AdjustDay(1)
i = 0
While ndt_datum_bis.TimeDifference(ndt_datum_von) > 0
Redim Preserve ndt_CalendarDateTime(Ubound(ndt_CalendarDateTime) + 1)
ndt_CalendarDateTime(Ubound(ndt_CalendarDateTime)) = ndt_datum_von.LSLocalTime
Call ndt_datum_von.AdjustDay(1)
Wend
doc.CalendarDateTime = ndt_CalendarDateTime
Set dateRange.StartDateTime = startDate
Set dateRange.EndDateTime = endDate
Set doc.TimeRange = dateRange
doc.SequenceNum = 1
doc.OrgTable = "P0"
Set doc.StartDateTime = New NotesDateTime (tmpDate)
Set doc.StartDate = New NotesDateTime (tmpDate)
Set doc.EndDateTime = New NotesDateTime (tmpDate2)
Call doc.ReplaceItemValue("_ViewIcon",9)
Call doc.ComputeWithForm(False,False)
Call doc.Save(True,False,True)
End Sub
-
Der Agent läuft im FrontEnd und damit mit den Rechten des aktuellen Users. Ausserdem ist der Eintrag des Users "Developer" im Serverdokument hier belanglos - wenn, müsste Developer in der ACL des Mailfiles eingetragen sein.
Funktionieren kann das nur, wenn der Agent scheduled auf dem Server läuft, statt im FrontEnd. Dann wäre es das einfachste, wenn der Agent mit der Server-ID signiert ist, da der Server ja Zugriff auf die Mailfiles haben sollte.
HTH,
Bernhard
-
Danke für den Hinweis Bernhard.
Ich arbeite mich gerade in LS ein,
da sind solche Fingerzeige für mich sehr hilfreich.
Das mit Backend und Frontend habe ich noch nicht so auf dem Schirm.
schönen Gruß und Dank Max
-
Simple gesagt: "Frontend" ist all das, was auch der User mit dem Client machen kann. Die Klassen haben alle das "UI" im Namen. UI-Klassen dürfen für server based agents nicht verwendet werden.
"Backend" ist all das, was direkt in der DB (auf Festplatte) passiert.
HTH,
Bernhard