Autor Thema: Agent zum Änderen Owner-Rechte (ACL) alle Maildatenbanken  (Gelesen 2016 mal)

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Hallo,

ich musste mir einen Button bauen, der allen Usern Manager-Rechte auf Ihre eigene Maildatenbank gibt und diese auch später wieder auf Editor setzen kann.

Sollte ich noch etwas bei unten stehendem Code beachten bevor ich ihn nach einer Datensicherung das Livesystem anfasse?

Viele Grüße
matze

Code
Sub Click(Source As Button)
'Allgemeine Variablen
Dim Session As New notessession
Dim Confirm As Integer
Dim Count As Integer
Dim CountShow As String
Dim PerformAclChenges As Integer
Dim ActionStatus As String
Dim NewAclLevel As Long
'Variablen für Names.nsf
Dim NamesDB As NotesDatabase
Dim NamesView As NotesView
Dim NamesDOC As NotesDocument
Dim NamesFileName As String
Dim NamesServerName As String
Dim NamesViewName As String
'Variablen für Maildatenbank aus der Names.nsf
Dim NamesMailFileName As Variant
Dim NamesMailFileOwner As Variant
Dim NamesMailFileMailServer As Variant
'Variablen für Maildatenbank des Users
Dim MailFileDB As NotesDatabase
' * * * Konfiguration  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
PerformAclChanges="0"
NamesFileName="names.nsf"
NamesServerName="demo01/springfield"
NamesViewName="($PEOPLE)"
  'Editor: ACLLEVEL_EDITOR
'Manager: ACLLEVEL_MANAGER
NewAclLevel&=ACLLEVEL_MANAGER
' * * * Konfiguration  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
  'Öffnen des NAB
Set NamesDB = Session.GetDatabase(NamesServerName, NamesFileName)   
Set NamesView = NamesDB.GetView(NamesViewName)
Set NamesDOC = NamesView.GetFirstDocument
'Durchlauf durch alle Personendokument im NAB
Do Until NamesDOC Is Nothing
NamesDOCcount=NamesDOCcount+1
'Auslesen der Variablen aus dem Personendokument des NAB
NamesMailFileName=NamesDOC.MailFile
NamesMailFileOwner=NamesDOC.FullName
NamesMailFileMailServer=NamesDOC.MailServer
'Öffnen der Maildatei des jeweiligen Personendokuments
Set MailFileDB = Session.GetDatabase(NamesMailFileMailServer(0),NamesMailFileName(0))     
If ( PerformAclChanges = 1 ) Then
'Setzen der neuen ACL
Call MailFileDB.GrantAccess( NamesMailFileOwner(0), NewAclLevel& )         
count=count+1
ActionStatus="Performed"
Else
ActionStatus="NOT Performed"
End If
CountShow=count
'Messagebox(CountShow+": "+ActionStatus+": "+NamesMailFileOwner(0)+": "+NamesMailFileName(0)+"   ("+NamesMailFileMailServer(0)+")")
Set NamesDOC = NamesView.GetNextDocument(NamesDOC)
Loop
Messagebox( "Geänderte Mailfiles: "+CountShow )
End Sub
« Letzte Änderung: 15.11.05 - 12:12:51 von matze79 »
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agent zum Änderen Owner-Rechte (ACL) alle Maildatenbanken
« Antwort #1 am: 15.11.05 - 12:16:50 »
Was mir so auf den ersten Blick auffällt: Es fehlt jegliches ErrorHandling.

Damit natürlich auch das, was einen Thread früher angefragt wurde: Öffnen einer Datenbank ohne Berechtigung abfangen

HTH,
Bernhard

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Re: Agent zum Änderen Owner-Rechte (ACL) alle Maildatenbanken
« Antwort #2 am: 15.11.05 - 12:45:53 »
> Es fehlt jegliches ErrorHandling.

Ich sollte den Code also für den Fehler wappnen, dass

a) die ausführende ID keine Rechte zum ändern der ACL hat und
b) die Datenbank aus dem Personendokument nicht existiert.

Kannst du mir einen Tip geben, wie die Fehlerroutine eingefügt werden sollte?

matze
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Re: Agent zum Änderen Owner-Rechte (ACL) alle Maildatenbanken
« Antwort #3 am: 15.11.05 - 14:19:25 »
Ich habe nun abgefangen, das er weitermacht, wenn im Personendokument nicht die benötigten Informationenn stehen. Außerdem gibt es jetzt noch eine Fortschritts- und Debug-Anzeige in der Statusbar.

Code
Sub Click(Source As Button)
'Allgemeine Variablen
Dim Session As New notessession
Dim Confirm As Integer
Dim Count As Integer
Dim CountOK As Integer
Dim CountER As Integer
Dim CountShow As String
Dim CountOKShow As String
Dim CountERShow As String
Dim PerformAclChenges As Integer
Dim ActionStatus As String
Dim NewAclLevel As Long
'Variablen für Names.nsf
Dim NamesDB As NotesDatabase
Dim NamesView As NotesView
Dim NamesDOC As NotesDocument
Dim NamesFileName As String
Dim NamesServerName As String
Dim NamesViewName As String
'Variablen für Maildatenbank aus der Names.nsf
Dim NamesMailFileName As Variant
Dim NamesMailFileOwner As Variant
Dim NamesMailFileMailServer As Variant
Dim NamesMailFileMailLastName As Variant
Dim NamesMailFileMailFirstName As Variant
'Variablen für Maildatenbank des Users
Dim MailFileDB As NotesDatabase
' * * * Konfiguration  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
'Füllen der Variablen für Names.nsf
namesFileName="names.nsf"
NamesServerName="demo01/springfield"
NamesViewName="($PEOPLE)"
PerformAclChanges="0"
  'Editor: ACLLEVEL_EDITOR
'Manager: ACLLEVEL_MANAGER
NewAclLevel&=ACLLEVEL_EDITOR
' * * * Konfiguration  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
Print "..........................................................................."
  'Öffnen des NAB
Set NamesDB = Session.GetDatabase(NamesServerName, NamesFileName)   
Set NamesView = NamesDB.GetView(NamesViewName)
Set NamesDOC = NamesView.GetFirstDocument
'Durchlauf durch alle Personendokument im NAB
Do Until NamesDOC Is Nothing
'Counter gesamt
count=count+1
CountShow=count
'Auslesen der Variablen aus dem Personendokument des NAB
NamesMailFileName=NamesDOC.MailFile
NamesMailFileOwner=NamesDOC.FullName
NamesMailFileMailServer=NamesDOC.MailServer
NamesMailFileMailLastName=NamesDOC.LastName
NamesMailFileMailFirstName=NamesDOC.FirstName
'Öffnen der Maildatei des jeweiligen Personendokuments
If ( PerformAclChanges = 1 And Len(NamesMailFileName(0))>1 And Len(NamesMailFileOwner(0))>1 And Len(NamesMailFileMailServer(0))>1 ) Then
'Öffnen der MailFile
Set MailFileDB = Session.GetDatabase(NamesMailFileMailServer(0),NamesMailFileName(0))     
'Setzen der neuen ACL
Call MailFileDB.GrantAccess( NamesMailFileOwner(0), NewAclLevel& )         
ActionStatus="OK"
'Counter OK
countOK=countOK+1
CountOKShow=countOK
Else
ActionStatus="ER"
'Counter ER
countER=countER+1
CountERShow=countER
End If
Print CountShow+": "+ActionStatus+": "+NamesMailFileMailLastName(0)+", "+NamesMailFileMailFirstName(0)+" - "+NamesMailFileOwner(0)+" - "+NamesMailFileName(0)+"  - "+NamesMailFileMailServer(0)
Set NamesDOC = NamesView.GetNextDocument(NamesDOC)
Loop
Print "..........................................................................."
Print( "Gesamt:"+CountSHow+"; OK:"+CountOKShow+"; Fehler: "+CountERShow+"        (Weitere Infos in der Statusbar)")
Messagebox( "Gesamt:"+CountSHow+"; OK:"+CountOKShow+"; Fehler: "+CountERShow+"        (Weitere Infos in der Statusbar)")
End Sub
« Letzte Änderung: 15.11.05 - 14:34:19 von matze79 »
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz