Autor Thema: Agent zum Änderen Owner-Rechte (ACL) alle Maildatenbanken  (Gelesen 1949 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