Autor Thema: Änderung von Dokumenten obwohl kein Autor  (Gelesen 5980 mal)

Offline Joker

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
  • Let`s start !!
Änderung von Dokumenten obwohl kein Autor
« am: 03.09.03 - 09:46:46 »
Hi,
habe da mal eine Frage.
Habe eine Datenbank in der eigentlich alle eingetragenen Personen nur Leserzugriff besitzen. (Bis auf 4-5 Leute mit Editor bzw. Managerrechten).
In einer Maske mit der die einzelnen Dokumente erstellt werden, befinden sich auch ein Autoren- sowie Leserfeld. Autorenzugriff haben standardmäßig nur die Personen, welche der Rolle [Administrator] angehören. Die Leserechte werden für jedes Dokument nach der Erstellung explizit festgelegt.

Nun habe ich folgendes Problem:
Beim öffnen einer Datenbank durch eine Person, welche als Leser in der ACL eingetragen ist, soll ein Script aufgerufen werden, welches einige Dokumente in der Datenbank aktualisiert. Sprich, in ein Richtextfeld werden die neuesten Dateien, welche sich in einem Verzeichnis befinden, eingebettet.

Bei einer Person mit Editorrechten oder höher funktioniert das ja einwandfrei. Doch bei einer Person welche nur Leserrechte hat funktioniert das nicht. Klar, sie hat ja nur Leserrechte und kann kein Dokument verändern und diese Änderungen dan speichern.

Also warum das nicht geht ist mir klar. Doch nun meine Frage: Gibt es eine Möglichkeit, dass eine Person die nur Leserrechte besitzt trotzdem Änderungen an einem Dokument durchführen kann (also nicht im Frontend, sondern durch ein Script im Backend).
Ich habe schon an einen Agenten gedacht der auf dem Server läuft oder aber auch daran der Person kurzzeitig Editorrechte zu geben ??? oder so ???

Vielleich kann mir ja jemand helfen. Vielleich habe ich auch gerade eine kleine Blockade !

Gruss
Martin

Offline Markus Henke

  • Aktives Mitglied
  • ***
  • Beiträge: 143
  • Geschlecht: Männlich
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #1 am: 03.09.03 - 10:07:36 »
Hi,

die Person braucht Autorenrechte und dann musst Du in die Dokumente ein Autorenfeld setzen und den Namen der Person, oder Rolle rein. Dann dürfte es gehen. So hast Du zumindest den Schreibzugriff auf bestimmte Dokumente begrenzt.

Ich denke Du kommst in keinem Fall drumherum die Rechte zu erhöhen. Egal wie Du es machst. Dafür sind die Sicherheitsfeatures da. :)

Gruß
Markus

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #2 am: 03.09.03 - 10:59:12 »
Eine Methode wäre der Start eines Agents, der die Signatur mit den entsprechenden Rechten trägt.
Schau' mal unter NotesAgent.RunOnServer in der Designer-Hilfe.

A-Bär: Du mußt dann vor Aufruf des Agents checken, ob lokal oder auf dem Server gearbeitet wird.

Eine andere Variante könnte sein, je nach den Userrechten Felder nur zum Lesen oder zum Editieren anzubieten.

Bernhard

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #3 am: 03.09.03 - 11:22:11 »
@Markus

... du musst die rechte nicht erweitern. Bernhard hat es in seinem Posting beschrieben - Agenten verwenden nicht die ID des Users, sondern die ID des Agenten - und das ist die ID mit der der Agent zuletzt gespeichert oder signiert wurde...

... wenn das lokal läuft sollte die konsistente ACL aktiviert sein, da sonst keine Sicherheitsüberprüfung stattfindet...

ata
Grüßle Toni :)

Offline Joker

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
  • Let`s start !!
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #4 am: 03.09.03 - 13:32:09 »
Hi,
danke für eure Antworten.
Habe das mit dem Agenten ausprobiert. Der Agent läuft auch einwandfrei. Jedoch nur wenn ich ihn von Hand (also rechte Maustaste - Starten) aufrufe.

Habe folgendes Script zum aufruf des Agenten entwickelt:

Dim session As NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent
   
Set session = New NotesSession
Set db = session.CurrentDatabase
Set agent = db.GetAgent("PDFAktualisierung")
   
If agent.RunOnServer = 0 Then
'Meldung für erfolgreiche Aktualisierung
Messagebox("Aktualisierung ausgeführt.")
Else
'Meldung, falls die Aktualisierung fehlschlägt
Messagebox("Aktualisierung fehlgeschlagen")
End If

Habe das ganze auch in eine Aktion gepackt. Es kommt auch die Meldung "Aktualisierung ausgeführt.", doch der Agent macht nichts !
Müsste doch eigentlich so gehen, oder ?


Driri

  • Gast
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #5 am: 03.09.03 - 14:10:08 »
Du führst den Agent ja gar nicht aus, du hast lediglich ein Handle auf den Agenten.

Da fehlt was wie Call agent.Run

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #6 am: 03.09.03 - 14:18:52 »
Klar führt er den Agent aus:
If agent.RunOnServer ....

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #7 am: 03.09.03 - 15:19:24 »
... was für einen Trigger hat der Agent? Wenn er auf die markierten Dokumente einer Ansicht läuft, dann lässt er sich nicht "fernsteuern"

ata
Grüßle Toni :)

Driri

  • Gast
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #8 am: 03.09.03 - 16:09:21 »
Ooops, erst lesen, dann denken, dann schreiben  ::)

Offline Joker

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
  • Let`s start !!
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #9 am: 04.09.03 - 11:05:53 »
@ata

Nein, der Agent läuft nicht auf die markierten Dokumente einer Ansicht. An sich müsste er ja funktionieren, denn wie gesagt, wenn ich ihn von Hand ausführe, dann läuft er ja auch ohne Probleme.

Habe es jetzt mal mit der Formel @Command([ToolsRunMacro];"PDFAktualisierung") ausprobiert. Funktioniert auch !!!
Jedoch wieder nur bei Personen die mindestens Editorrechte besitzen !

Zieht er sich durch die Ausführung bei der Formel nicht die ID des Agenten (letzte Speicherung bzw. Signierung) heran ?

Müssen am Server bestimmte Vorraussetzungen gegeben sein, dass ich ihn per Script aufrufen kann ???

Gruss
Martin

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #10 am: 04.09.03 - 11:08:52 »
... schau mal im Serverdokument in den Sicherheitseinstellungen, dort gibt es die Mögklichkeit einiges einzuschränken...

... er zieht sich als User auf jeden Fall die Signierung des Agenten...

ata
Grüßle Toni :)

Offline wkrause

  • Frischling
  • *
  • Beiträge: 13
  • Geschlecht: Männlich
  • Searching for intelligence in the office
    • Meine Webseite
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #11 am: 04.09.03 - 11:49:40 »
Hallo,

soweit ich weiss läuft ein Agent (zumindest in R5) mit den Rechten des Users. Abhilfe Daten irgendwo zwischenspeíchern (zb. mit einer Public Form) und dann per Hintergrundagenten (zeit/ereignissgesteuert) einlesen.

Offline Joker

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
  • Let`s start !!
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #12 am: 04.09.03 - 12:02:31 »
Hi,
habe jetzt herausgefunden, warum das Script mit dem RunOnServer-Befehl nicht ging.

Notes führt den Agenten zwar ganz normal aus. Jedoch habe ich im Script des Agenten eine Bibliothek eingebunden welche mir eine eine Funktion bereitstellt, mit der ich das Erstellugsdatum einer bestimmten Datei bekomme ( Script in WinAPI !!!!!!!!!). Genau dann wenn ich die Funktion aufrufen möchte steigt er aus.

Ich mache das folgendermaßen (Script-Klasse heißt FileInfo) :

Set FileInfo = New FileInfo
ErstDatumNeu = FileInfo.GetFileTimeInfo(FilePath,2)

Muss man die Script-Klasse vielleicht anders initialisiert werden. Oder muss vielleicht für WinAPI im Serverdokument etwas eingestellt werden. Oder funktioniert der Aufruf von WinAPI-Methoden in einem Agenten auf dem Server nicht ??

Vielleicht kann mir ja jemand weiterhelfen. Beschäftige mich leider zum ersten Mal mit WinAPI-Einbindung in Lotus.

Gruss
Martin

Driri

  • Gast
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #13 am: 04.09.03 - 12:05:39 »
Was steht denn in FilePath drin ? Gibt es denn diese bestimmte Datei auch auf dem Server ?

Offline Joker

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
  • Let`s start !!
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #14 am: 04.09.03 - 13:52:23 »
Hi,

in FilePath steht der Pfad für die Datei, von der das Erstellungsdatum ermittelt werden soll (z.B. C:/Temp/...).

Die Script-Klasse, welche ich verwende sieht folgendermaßen aus:


Const INVALID_HANDLE_VALUE = -1
Const MAX_PATH = 260

Type FILETIME
   dwLowDateTime As Long
   dwHighDateTime As Long
End Type

Type WIN32_FIND_DATA
   dwFileAttributes As Long ' Dateiattribute
   ftCreationTime As FILETIME ' Erstellungsdatum
   ftLastAccessTime As FILETIME ' Letzter Zugriff
   ftLastWriteTime As FILETIME ' Letzte Speicherung
   nFileSizeHigh As Long ' Größe (Hi)
   nFileSizeLow As Long ' Größe (Lo)
   dwReserved0 As Long ' bedeutungslos
   dwReserved1 As Long ' bedeutungslos
   cFileName As String * MAX_PATH ' Dateiname
   cAlternate As String * 14 ' 8.3-Dateiname
End Type

Type SYSTEMTIME
   wYear As Integer
   wMonth As Integer
   wDayOfWeek As Integer
   wDay As Integer
   wHour As Integer
   wMinute As Integer
   wSecond As Integer
   wMilliseconds As Integer
End Type


Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (Byval lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (Byval hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Declare Function FindClose Lib "kernel32" (Byval hFindFile As Long) As Long
Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Class FileInfo
   
   Public Function GetFileTimeInfo ( strPath As String , MODE As Integer ) As String
     
      Dim FileHandle As Long
      Dim FileData As WIN32_FIND_DATA
      Dim LocalFileTime As FILETIME
      Dim LocalSystemTime As SYSTEMTIME
     
      FileHandle = FindFirstFile(strPath & vbNullChar, FileData)
      Select Case MODE
         
      Case 0
         FileTimeToLocalFileTime FileData.ftLastAccessTime, LocalFileTime              
      Case 1
         FileTimeToLocalFileTime FileData.ftLastWriteTime, LocalFileTime              
      Case 2
         FileTimeToLocalFileTime FileData.ftCreationTime, LocalFileTime              
         
      End Select
     
      FileTimeToSystemTime LocalFileTime, LocalSystemTime
     
      GetFileTimeInfo = _
      Left$(FileData.cFileName, Instr(FileData.cFileName, vbNullChar) - 1)  _
      & LocalSystemTime.wDay & "." _
      & LocalSystemTime.wMonth & "." _
      & LocalSystemTime.wYear & ", "_
      & LocalSystemTime.wHour & ":" _
      & Format$(LocalSystemTime.wMinute, "00") _
      & ":" & Format$(LocalSystemTime.wSecond, "00") & " Uhr"
     
      FindClose FileHandle
     
   End Function
   
   Public Function GetFileInfo ( strPath As String , MODE As Integer ) As String
     
      Dim FileHandle As Long
      Dim FileData As WIN32_FIND_DATA
     
      FileHandle = FindFirstFile ( strPath  & vbNullChar , FileData )
     
      If FileHandle <> INVALID_HANDLE_VALUE Then
         
         Select Case MODE
           
         Case 3
            GetFileInfo = FileData.cFileName
         Case 4
            GetFileInfo = Cstr(FileData.nFileSizeLow)
         Case 5
            GetFileInfo = FileData.cFileName
         Case 6
            GetFileInfo = Cstr(FileData.dwFileAttributes)
         Case 7
            GetFileInfo = Cstr(FileData.cAlternate)
           
         End Select
      End If
      FindClose FileHandle
     
   End Function
   
End Class



Also mit MODE = 2 hole ich mir das Erstellungsdatum.

Diese Script-Klasse habe ich in eine Script Bibliothek eingefügt. Diese wiederum habe ich mit Use "Name der Bibliothek" zum Agenten hinzugefügt (wie auch bei einer normalen Bibliothek mit Lotus-Script-Code).
Habe es auch schon mal probiert, wenn ich die Klasse direkt in den Agenten hineinkopiere (also ohne Use).
 
Gleicher Fall : Irgendwie kann er auf dem Server die WinAPI-Funktion nicht ausführen.

Gruss
Martin

Driri

  • Gast
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #15 am: 04.09.03 - 13:59:46 »
Vielleicht sollte eknori da mal was zu sagen, scheint ja der API-Gott hier zu sein  ;)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Änderung von Dokumenten obwohl kein Autor
« Antwort #16 am: 04.09.03 - 16:17:45 »
... ist das ein Windows-Server?

ata
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz