How to add/enable/disable/remove roles in ACL

Dear,

Did anyone code captioned function in LotusScript? Would you like to show your codes here? Appreciated for your kind help here

Landy

Subject: How to add/enable/disable/remove roles in ACL

Landy,Yes, I have a tool that builds ACL entries. It can alter existing ones etc.

I’m sorry about the lack of err coding standards, I was a bit bored when writing this, it took some time - but this was partly 'cause I was and am still quite new to LS…

Heres some sample code:

(Options)

Option public

(Declarations)

Dim acl As NotesACL

Sub Initialize

Dim workspace As New NotesUIWorkspace

'Dim askme As Integer

'Prompt the developer for the server and database name

'Then set db as what they put in

'First bit sets default entries to save time

Dim Server As String

Dim database As String

Dim DefaultServer As String

Dim DefaultDatabase As String

DefaultServer = "UK-DVWallace"

DefaultDatabase = ".ntf"

Dim entry As NotesACLEntry

Dim entry1 As NotesACLEntry

Dim entry2 As NotesACLEntry

Dim entry3 As NotesACLEntry

Dim entry4 As NotesACLEntry

Dim entry5 As NotesACLEntry

Dim entry6 As NotesACLEntry

Dim entry7 As NotesACLEntry

Dim entry8 As NotesACLEntry





server = workspace.Prompt (PROMPT_OKCANCELEDIT, _

"Please enter the server name", _

"For example UK-DVWallace", _

DefaultServer)

database = workspace.Prompt (PROMPT_OKCANCELEDIT, _

"Please enter the database name", _

"For example TEST.ntf", _

DefaultDatabase)

Dim db As New NotesDatabase _

(Server,Database)



'Set the default entry. If it's already there, set to standards

'If not, entry is added.

Set acl = db.ACL

Set entry = acl.GetEntry( "-Default-" )

If Not ( entry Is Nothing ) Then

	entry.Level = ACLLEVEL_NOACCESS

	entry.IsPublicReader = False

	entry.IsPublicWriter = False

	entry.CanReplicateOrCopyDocuments = False

	'Below lines need fixing, to accomodate if roles is blank.

	Forall r In acl.Roles

		Dim doRolesExist As Variant

		doRolesExist = acl.Roles

		If doRolesExist(0)= "" Then

		Else

			Set entry2 = acl.GetEntry( "-Default-" )

			Call entry2.DisableRole(r)

		End If 

	End Forall

	

Else

	Dim Unspecified As New NotesACLEntry _

	( acl, "-Default-", ACLLEVEL_NOACCESS)

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then

		Else

			Set entry2 = acl.GetEntry( "-Default-" )

			Call entry2.DisableRole(r)

		End If

	End Forall

	Call acl.Save

End If

'Set access for */Genric/CompanyName

'If its there set access to standards

'If not create it and set entry to standards

Set entry3 = acl.GetEntry( "*/Genric/CompanyName" )

If Not ( entry3 Is Nothing ) Then

	entry3.Level = ACLLEVEL_READER

	entry3.UserType = ACLTYPE_UNSPECIFIED		

	entry3.IsPublicWriter = True

	entry3.CanReplicateOrCopyDocuments = True

	entry3.CanCreatePersonalAgent = False

	entry3.CanCreatePersonalFolder = False

	entry3.CanCreatePersonalAgent = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry3 = acl.GetEntry( "*/Genric/CompanyName" )

			Call entry3.EnableRole(r)

		End If

	End Forall

Else

	'Otherwise, we need to create the entry and set the access

	

	Dim something As New NotesACLEntry _

	( acl, "*/Genric/CompanyName", ACLLEVEL_READER )

	something.CanReplicateOrCopyDocuments = True

	something.IsPublicWriter = True

	Call acl.Save

	

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then

		Else

			Set entry3 = acl.GetEntry( "*/Genric/CompanyName" )

			Call entry3.EnableRole(r)

		End If

	End Forall

	Call acl.Save

End If

'==============START ANONYMOUS=============

'Set access for Anonymous

Set entry4 = acl.GetEntry( "Anonymous" )

If Not ( entry4 Is Nothing ) Then

	entry4.Level = ACLLEVEL_NOACCESS

	entry4.UserType = ACLTYPE_UNSPECIFIED

	entry4.IsPublicReader = False

	entry4.IsPublicWriter = False

	entry4.CanReplicateOrCopyDocuments = False

	entry4.CanCreatePersonalAgent = False

	entry4.CanCreatePersonalFolder = False

	entry4.CanCreatePersonalAgent = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry4 = acl.GetEntry( "Anonymous" )

			Call entry4.DisableRole(r)

		End If

	End Forall

Else

	

	Dim somethingelse As New NotesACLEntry _

	( acl, "Anonymous", ACLLEVEL_NOACCESS )

	somethingelse.IsPublicReader = False

	somethingelse.CanReplicateOrCopyDocuments = False

	somethingelse.IsPublicWriter = False

	somethingelse.CanCreatePersonalAgent = False

	somethingelse.CanCreatePersonalFolder = False

	somethingelse.CanCreatePersonalAgent = False

	Call acl.Save

	

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry4 = acl.GetEntry( "Anonymous" )

			Call entry4.DisableRole(r)

		End If

	End Forall

End If

'=======================END Anonymous==============

'START DeniedAcess===============================

'Set access for Denied Access entry



Set entry5 = acl.GetEntry( "DeniedAccess" )

If Not ( entry5 Is Nothing ) Then

	entry5.Level = ACLLEVEL_NOACCESS

	entry5.UserType = ACLTYPE_MIXED_GROUP

	entry5.IsPublicReader = False

	entry5.IsPublicWriter = False

	entry5.CanReplicateOrCopyDocuments = False

	entry5.CanCreatePersonalAgent = False

	entry5.CanCreatePersonalFolder = False

	entry5.CanCreatePersonalAgent = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry5= acl.GetEntry( "DeniedAccess" )

			Call entry5.DisableRole(r)

			Call acl.Save

		End If

	End Forall

Else

	Dim bugsbunny As New NotesACLEntry _

	( acl, "DeniedAccess", ACLLEVEL_NOACCESS )

	'Call acl.Save

	'Set bugsbunny = acl.GetEntry( "DeniedAccess" )

	bugsbunny.UserType = ACLTYPE_MIXED_GROUP

	bugsbunny.IsPublicReader = False

	bugsbunny.CanReplicateOrCopyDocuments = False

	bugsbunny.IsPublicWriter = False

	bugsbunny.CanCreatePersonalAgent = False

	bugsbunny.CanCreatePersonalFolder = False

	bugsbunny.CanCreatePersonalAgent = False

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry5= acl.GetEntry( "DeniedAccess" )

			Call entry5.DisableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END DeniedAccess Section

'START EU-NotesDBAdministrators section

Set entry6 = acl.GetEntry( "EU-NotesDBAdministrators" )

If Not ( entry6 Is Nothing ) Then

	entry6.Level = ACLLEVEL_MANAGER

	entry6.UserType = ACLTYPE_PERSON_GROUP

	entry6.CanCreateDocuments = True

	entry6.CanDeleteDocuments = True

	entry6.IsPublicReader = True

	entry6.IsPublicWriter = True

	entry6.CanReplicateOrCopyDocuments = True

	entry6.CanCreatePersonalAgent = True

	entry6.CanCreatePersonalFolder = True

	entry6.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry6= acl.GetEntry( "EU-NotesDBAdministrators" )

			Call entry6.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim daffyduck As New NotesACLEntry _

	( acl, "EU-NotesDBAdministrators", ACLLEVEL_MANAGER )

	'Call acl.Save

	'Set bugsbunny = acl.GetEntry( "DeniedAccess" )

	daffyduck.UserType = ACLTYPE_PERSON_GROUP

	daffyduck.CanCreateDocuments = True

	daffyduck.CanDeleteDocuments = True

	daffyduck.IsPublicReader = True

	daffyduck.CanReplicateOrCopyDocuments = True

	daffyduck.IsPublicWriter = True

	daffyduck.CanCreatePersonalAgent = True

	daffyduck.CanCreatePersonalFolder = True

	daffyduck.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry6= acl.GetEntry( "EU-NotesDBAdministrators" )

			Call entry6.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END EU-NotesDBAdministrators

'====START LocalDomainHubs

Set entry7 = acl.GetEntry( "LocalDomainHubs" )

If Not ( entry7 Is Nothing ) Then

	entry7.Level = ACLLEVEL_MANAGER

	entry7.UserType = ACLTYPE_MIXED_GROUP

	entry7.CanCreateDocuments = True

	entry7.CanDeleteDocuments = True

	entry7.IsPublicReader = True

	entry7.IsPublicWriter = True

	entry7.CanReplicateOrCopyDocuments = True

	entry7.CanCreatePersonalAgent = True

	entry7.CanCreatePersonalFolder = True

	entry7.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry7= acl.GetEntry( "LocalDomainHubs" )

			Call entry7.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim ObiWan As New NotesACLEntry _

	( acl, "LocalDomainHubs", ACLLEVEL_MANAGER )

	ObiWan.UserType = ACLTYPE_MIXED_GROUP

	ObiWan.CanCreateDocuments = True

	ObiWan.CanDeleteDocuments = True

	ObiWan.IsPublicReader = True

	ObiWan.CanReplicateOrCopyDocuments = True

	ObiWan.IsPublicWriter = True

	ObiWan.CanCreatePersonalAgent = True

	ObiWan.CanCreatePersonalFolder = True

	ObiWan.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry7= acl.GetEntry( "LocalDomainHubs" )

			Call entry7.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END LOCAL DOMAIN HUBS

'START LOCALDOMAINSERVERS===================

Set entry8 = acl.GetEntry( "LocalDomainServers" )

If Not ( entry8 Is Nothing ) Then

	entry8.Level = ACLLEVEL_EDITOR

	entry8.UserType = ACLTYPE_MIXED_GROUP

	entry8.CanCreateDocuments = True

	entry8.CanDeleteDocuments = True

	entry8.IsPublicReader = True

	entry8.IsPublicWriter = True

	entry8.CanReplicateOrCopyDocuments = True

	entry8.CanCreatePersonalAgent = True

	entry8.CanCreatePersonalFolder = True

	entry8.CanCreateLSOrJavaAgent = True

	entry8.CanCreateSharedFolder = True

	entry8.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry8= acl.GetEntry( "LocalDomainServers" )

			Call entry8.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim Homer As New NotesACLEntry _

	( acl, "LocalDomainServers", ACLLEVEL_EDITOR )

	Homer.UserType = ACLTYPE_MIXED_GROUP

	Homer.CanCreateDocuments = True

	Homer.CanDeleteDocuments = True

	Homer.IsPublicReader = True

	Homer.CanReplicateOrCopyDocuments = True

	Homer.IsPublicWriter = True

	Homer.CanCreatePersonalAgent = True

	Homer.CanCreatePersonalFolder = True

	Homer.CanCreateLSOrJavaAgent = True

	Homer.CanCreateSharedFolder = True

	Homer.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry7= acl.GetEntry( "LocalDomainServers" )

			Call entry7.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END LocalDomainServers

'START OTHER DOMAIN SERVERS

Set entry9 = acl.GetEntry( "OtherDomainServers" )

If Not ( entry9 Is Nothing ) Then

	entry9.Level = ACLLEVEL_NOACCESS

	entry9.UserType = ACLTYPE_MIXED_GROUP

	entry9.IsPublicReader = False

	entry9.IsPublicWriter = False

	entry9.CanReplicateOrCopyDocuments = False

	entry9.CanCreatePersonalAgent = False

	entry9.CanCreatePersonalFolder = False

	entry9.CanCreatePersonalAgent = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry9= acl.GetEntry( "OtherDomainServers" )

			Call entry9.DisableRole(r)

			Call acl.Save

		End If

	End Forall

Else

	Dim Crunch As New NotesACLEntry _

	( acl, "OtherDomainServers", ACLLEVEL_NOACCESS )

	Crunch.UserType = ACLTYPE_MIXED_GROUP

	Crunch.IsPublicReader = False

	Crunch.CanReplicateOrCopyDocuments = False

	Crunch.IsPublicWriter = False

	Crunch.CanCreatePersonalAgent = False

	Crunch.CanCreatePersonalFolder = False

	Crunch.CanCreatePersonalAgent = False

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else		

			Set entry9= acl.GetEntry( "OtherDomainServers" )

			Call entry9.DisableRole(r)

		End If	

	End Forall

	Call acl.Save

End If

'END OTHER DOMAIN SERVERS

'START Server/Genric/CompanyName

Set entry10 = acl.GetEntry( "Server/Generic/Company/Country" )

If Not ( entry10 Is Nothing ) Then

	entry10.Level = ACLLEVEL_MANAGER

	entry10.UserType = ACLTYPE_SERVER

	entry10.CanCreateDocuments = True

	entry10.CanDeleteDocuments = True

	entry10.IsPublicReader = True

	entry10.IsPublicWriter = True

	entry10.CanReplicateOrCopyDocuments = True

	entry10.CanCreatePersonalAgent = True

	entry10.CanCreatePersonalFolder = True

	entry10.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry10= acl.GetEntry( "Server/Company1/Generic/Country" )

			Call entry10.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim Stabilo As New NotesACLEntry _

	( acl, "Server/Country-Region/Company/Country", ACLLEVEL_MANAGER )

	Stabilo.UserType = ACLTYPE_SERVER

	Stabilo.CanCreateDocuments = True

	Stabilo.CanDeleteDocuments = True

	Stabilo.IsPublicReader = True

	Stabilo.CanReplicateOrCopyDocuments = True

	Stabilo.IsPublicWriter = True

	Stabilo.CanCreatePersonalAgent = True

	Stabilo.CanCreatePersonalFolder = True

	Stabilo.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else		

			Set entry10= acl.GetEntry( "Server/CountryRegion/Company/Country" )

			Call entry10.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END UK-HAWKING

'START UK-IT-BSG-NotesDevelopers

Set entry11 = acl.GetEntry( "UK-IT-BSG-NotesDevelopers" )

If Not ( entry11 Is Nothing ) Then

	entry11.Level = ACLLEVEL_MANAGER

	entry11.UserType = ACLTYPE_PERSON_GROUP

	entry11.CanCreateDocuments = True

	entry11.CanDeleteDocuments = True

	entry11.IsPublicReader = True

	entry11.IsPublicWriter = True

	entry11.CanReplicateOrCopyDocuments = True

	entry11.CanCreatePersonalAgent = True

	entry11.CanCreatePersonalFolder = True

	entry11.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry11= acl.GetEntry( "UK-IT-BSG-NotesDevelopers" )

			Call entry11.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim Boss As New NotesACLEntry _

	( acl, "UK-IT-BSG-NotesDevelopers", ACLLEVEL_MANAGER)

	Boss.UserType = ACLTYPE_PERSON_GROUP

	Boss.CanCreateDocuments = True

	Boss.CanDeleteDocuments = True

	Boss.IsPublicReader = True

	Boss.CanReplicateOrCopyDocuments = True

	Boss.IsPublicWriter = True

	Boss.CanCreatePersonalAgent = True

	Boss.CanCreatePersonalFolder = True

	Boss.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry11= acl.GetEntry( "UK-IT-BSG-NotesDevelopers" )

			Call entry11.EnableRole(r)

		End If	

	End Forall

	Call acl.Save

	

End If



'Start of building seed entries



Dim entrya As NotesACLEntry

Dim entry1a As NotesACLEntry

Dim entry2a As NotesACLEntry

Dim entry3a As NotesACLEntry

Dim entry4a As NotesACLEntry

Dim entry5a As NotesACLEntry

Dim entry6a As NotesACLEntry

Dim entry7a As NotesACLEntry

Dim entry8a As NotesACLEntry



'Set the default entry. If it's already there, set to standards

'If not, entry is added.

Set acl = db.ACL

Set entrya = acl.GetEntry( "[-Default-]" )

If Not ( entrya Is Nothing ) Then

	entrya.Level = ACLLEVEL_NOACCESS

	entrya.IsPublicReader = False

	entrya.IsPublicWriter = False

	entrya.CanReplicateOrCopyDocuments = False

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry2a = acl.GetEntry( "[-Default-]" )

			Call entry2a.DisableRole(r)

		End If

	End Forall

	

Else

	

	Dim Unspecified1 As New NotesACLEntry _

	( acl, "[-Default-]",ACLLEVEL_NOACCESS)

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry2a = acl.GetEntry( "[-Default-]" )

			Call entry2a.DisableRole(r)

		End If

	End Forall

	Call acl.Save

End If

'Set access for */Genric/Company

'If its there set access to standards

'If not create it and set entry to standards

Set entry3a = acl.GetEntry( "[*/Company/Generic]" )

If Not ( entry3a Is Nothing ) Then

	entry3a.Level = ACLLEVEL_AUTHOR

	entry3a.UserType = ACLTYPE_UNSPECIFIED		

	entry3a.IsPublicWriter = True

	entry3a.CanReplicateOrCopyDocuments = True

	entry3a.CanCreatePersonalAgent = False

	entry3a.CanCreatePersonalFolder = False

	entry3a.CanCreatePersonalAgent = False

	entry3a.CanCreateDocuments = True

	entry3a.CanDeleteDocuments = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry3a = acl.GetEntry( "[*/CompanyName/Country]" )

			Call entry3a.DisableRole(r)

		End If

	End Forall

Else

	'Otherwise, we need to create the entry and set the access

	

	Dim something1 As New NotesACLEntry _

	( acl, "[*/Company/Country]", ACLLEVEL_AUTHOR)

	something1.CanReplicateOrCopyDocuments = True

	something1.IsPublicWriter = True

	something1.CanCreateDocuments = True

	something1.CanDeleteDocuments = False

	Call acl.Save

	

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry3a = acl.GetEntry( "[*/Company/Country]" )

			Call entry3a.DisableRole(r)

		End If

	End Forall

	Call acl.Save

End If

'==============START ANONYMOUS=============

'Set access for Anonymous

Set entry4a = acl.GetEntry( "[Anonymous]" )

If Not ( entry4a Is Nothing ) Then

	entry4a.Level = ACLLEVEL_NOACCESS

	entry4a.UserType = ACLTYPE_UNSPECIFIED

	entry4a.IsPublicReader = False

	entry4a.IsPublicWriter = False

	entry4a.CanReplicateOrCopyDocuments = False

	entry4a.CanCreatePersonalAgent = False

	entry4a.CanCreatePersonalFolder = False

	entry4a.CanCreatePersonalAgent = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else	

			Set entry4a = acl.GetEntry( "[Anonymous]" )

			Call entry4a.DisableRole(r)

		End If

	End Forall

Else

	

	Dim somethingelse1 As New NotesACLEntry _

	( acl, "[Anonymous]", ACLLEVEL_NOACCESS )

	somethingelse1.IsPublicReader = False

	somethingelse1.CanReplicateOrCopyDocuments = False

	somethingelse1.IsPublicWriter = False

	somethingelse1.CanCreatePersonalAgent = False

	somethingelse1.CanCreatePersonalFolder = False

	somethingelse1.CanCreatePersonalAgent = False

	Call acl.Save

	

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry4a = acl.GetEntry( "[Anonymous]" )

			Call entry4a.DisableRole(r)

		End If

	End Forall

End If

'=======================END Anonymous==============

'START DeniedAcess===============================

'Set access for Denied Access entry



Set entry5a = acl.GetEntry( "[DeniedAccess]" )

If Not ( entry5a Is Nothing ) Then

	entry5a.Level = ACLLEVEL_NOACCESS

	entry5a.UserType = ACLTYPE_MIXED_GROUP

	entry5a.IsPublicReader = False

	entry5a.IsPublicWriter = False

	entry5a.CanReplicateOrCopyDocuments = False

	entry5a.CanCreatePersonalAgent = False

	entry5a.CanCreatePersonalFolder = False

	entry5a.CanCreatePersonalAgent = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry5a= acl.GetEntry( "[DeniedAccess]" )

			Call entry5a.DisableRole(r)

			Call acl.Save

		End If

	End Forall

Else

	Dim bugsbunny1 As New NotesACLEntry _

	( acl, "[DeniedAccess]", ACLLEVEL_NOACCESS )

	'Call acl.Save

	'Set bugsbunny1 = acl.GetEntry( "[DeniedAccess]" )

	bugsbunny1.UserType = ACLTYPE_MIXED_GROUP

	bugsbunny1.IsPublicReader = False

	bugsbunny1.CanReplicateOrCopyDocuments = False

	bugsbunny1.IsPublicWriter = False

	bugsbunny1.CanCreatePersonalAgent = False

	bugsbunny1.CanCreatePersonalFolder = False

	bugsbunny1.CanCreatePersonalAgent = False

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry5a= acl.GetEntry( "[DeniedAccess]" )

			Call entry5a.DisableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END DeniedAccess Section

'START EU-NotesDBAdministrators section

Set entry6a = acl.GetEntry( "[EU-NotesDBAdministrators]" )

If Not ( entry6a Is Nothing ) Then

	entry6a.Level = ACLLEVEL_MANAGER

	entry6a.UserType = ACLTYPE_PERSON_GROUP

	entry6a.CanCreateDocuments = True

	entry6a.CanDeleteDocuments = True

	entry6a.IsPublicReader = True

	entry6a.IsPublicWriter = True

	entry6a.CanReplicateOrCopyDocuments = True

	entry6a.CanCreatePersonalAgent = True

	entry6a.CanCreatePersonalFolder = True

	entry6a.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry6a= acl.GetEntry( "[EU-NotesDBAdministrators]" )

			Call entry6a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim daffyduck1 As New NotesACLEntry _

	( acl, "[EU-NotesDBAdministrators]", ACLLEVEL_MANAGER )

	'Call acl.Save

	'Set bugsbunny1 = acl.GetEntry( "[DeniedAccess]" )

	daffyduck1.UserType = ACLTYPE_PERSON_GROUP

	daffyduck1.CanCreateDocuments = True

	daffyduck1.CanDeleteDocuments = True

	daffyduck1.IsPublicReader = True

	daffyduck1.CanReplicateOrCopyDocuments = True

	daffyduck1.IsPublicWriter = True

	daffyduck1.CanCreatePersonalAgent = True

	daffyduck1.CanCreatePersonalFolder = True

	daffyduck1.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry6a= acl.GetEntry( "[EU-NotesDBAdministrators]" )

			Call entry6a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END EU-NotesDBAdministrators

'====START LocalDomainHubs

Set entry7a = acl.GetEntry( "[LocalDomainHubs]" )

If Not ( entry7a Is Nothing ) Then

	entry7a.Level = ACLLEVEL_MANAGER

	entry7a.UserType = ACLTYPE_MIXED_GROUP

	entry7a.CanCreateDocuments = True

	entry7a.CanDeleteDocuments = True

	entry7a.IsPublicReader = True

	entry7a.IsPublicWriter = True

	entry7a.CanReplicateOrCopyDocuments = True

	entry7a.CanCreatePersonalAgent = True

	entry7a.CanCreatePersonalFolder = True

	entry7a.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry7a= acl.GetEntry( "[LocalDomainHubs]" )

			Call entry7a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim ObiWan1 As New NotesACLEntry _

	( acl, "[LocalDomainHubs]", ACLLEVEL_MANAGER )

	ObiWan1.UserType = ACLTYPE_MIXED_GROUP

	ObiWan1.CanCreateDocuments = True

	ObiWan1.CanDeleteDocuments = True

	ObiWan1.IsPublicReader = True

	ObiWan1.CanReplicateOrCopyDocuments = True

	ObiWan1.IsPublicWriter = True

	ObiWan1.CanCreatePersonalAgent = True

	ObiWan1.CanCreatePersonalFolder = True

	ObiWan1.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else		

			Set entry7a= acl.GetEntry( "[LocalDomainHubs]" )

			Call entry7a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END LOCAL DOMAIN HUBS

'START LOCALDOMAINSERVERS===================

Set entry8a = acl.GetEntry( "[LocalDomainServers]" )

If Not ( entry8a Is Nothing ) Then

	entry8a.Level = ACLLEVEL_EDITOR

	entry8a.UserType = ACLTYPE_MIXED_GROUP

	entry8a.CanCreateDocuments = True

	entry8a.CanDeleteDocuments = True

	entry8a.IsPublicReader = True

	entry8a.IsPublicWriter = True

	entry8a.CanReplicateOrCopyDocuments = True

	entry8a.CanCreatePersonalAgent = True

	entry8a.CanCreatePersonalFolder = True

	entry8a.CanCreateLSOrJavaAgent = True

	entry8a.CanCreateSharedFolder = True

	entry8a.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry8a= acl.GetEntry( "[LocalDomainServers]" )

			Call entry8a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim Homer1 As New NotesACLEntry _

	( acl, "[LocalDomainServers]", ACLLEVEL_EDITOR )

	Homer1.UserType = ACLTYPE_MIXED_GROUP

	Homer1.CanCreateDocuments = True

	Homer1.CanDeleteDocuments = True

	Homer1.IsPublicReader = True

	Homer1.CanReplicateOrCopyDocuments = True

	Homer1.IsPublicWriter = True

	Homer1.CanCreatePersonalAgent = True

	Homer1.CanCreatePersonalFolder = True

	Homer1.CanCreateLSOrJavaAgent = True

	Homer1.CanCreateSharedFolder = True

	Homer1.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else		

			Set entry7b= acl.GetEntry( "[LocalDomainServers]" )

			Call entry7b.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'END LocalDomainServers

'START OTHER DOMAIN SERVERS

Set entry9a = acl.GetEntry( "[OtherDomainServers]" )

If Not ( entry9a Is Nothing ) Then

	entry9a.Level = ACLLEVEL_NOACCESS

	entry9a.UserType = ACLTYPE_MIXED_GROUP

	entry9a.IsPublicReader = False

	entry9a.IsPublicWriter = False

	entry9a.CanReplicateOrCopyDocuments = False

	entry9a.CanCreatePersonalAgent = False

	entry9a.CanCreatePersonalFolder = False

	entry9a.CanCreatePersonalAgent = False

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry9a= acl.GetEntry( "[OtherDomainServers]" )

			Call entry9a.DisableRole(r)

			Call acl.Save

		End If

	End Forall

Else

	Dim Crunch1 As New NotesACLEntry _

	( acl, "[OtherDomainServers]", ACLLEVEL_NOACCESS )

	Crunch1.UserType = ACLTYPE_MIXED_GROUP

	Crunch1.IsPublicReader = False

	Crunch1.CanReplicateOrCopyDocuments = False

	Crunch1.IsPublicWriter = False

	Crunch1.CanCreatePersonalAgent = False

	Crunch1.CanCreatePersonalFolder = False

	Crunch1.CanCreatePersonalAgent = False

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry9a= acl.GetEntry( "[OtherDomainServers]" )

			Call entry9a.DisableRole(r)

		End If			

	End Forall

	Call acl.Save

End If

'END OTHER DOMAIN SERVERS

'START UK-IT-BSG-NotesDevelopers

Set entry11a = acl.GetEntry( "[UK-IT-BSG-NotesDevelopers]" )

If Not ( entry11a Is Nothing ) Then

	entry11a.Level = ACLLEVEL_DESIGNER

	entry11a.UserType = ACLTYPE_PERSON_GROUP

	entry11a.CanCreateDocuments = True

	entry11a.CanDeleteDocuments = False

	entry11a.IsPublicReader = True

	entry11a.IsPublicWriter = True

	entry11a.CanReplicateOrCopyDocuments = True

	entry11a.CanCreatePersonalAgent = True

	entry11a.CanCreatePersonalFolder = True

	entry11a.CanCreatePersonalAgent = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry11a= acl.GetEntry( "[UK-IT-BSG-NotesDevelopers]" )

			Call entry11a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim Boss1 As New NotesACLEntry _

	( acl, "[UK-IT-BSG-NotesDevelopers]", ACLLEVEL_DESIGNER)

	Boss1.UserType = ACLTYPE_PERSON_GROUP

	Boss1.CanCreateDocuments = True

	Boss1.CanDeleteDocuments = False

	Boss1.IsPublicReader = True

	Boss1.CanReplicateOrCopyDocuments = True

	Boss1.IsPublicWriter = True

	Boss1.CanCreatePersonalAgent = True

	Boss1.CanCreatePersonalFolder = True

	Boss1.CanCreatePersonalAgent = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry11a= acl.GetEntry( "[UK-IT-BSG-NotesDevelopers]" )

			Call entry11a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'End UK-IT-BSG-NotesDevelopers

'Start Company Admin Advanced

Set entry12a = acl.GetEntry( "[Company-Admin-Advanced]" )

If Not ( entry12a Is Nothing ) Then

	entry12a.Level = ACLLEVEL_READER

	entry12a.UserType = ACLTYPE_MIXED_GROUP

	entry12a.IsPublicReader = True

	entry12a.IsPublicWriter = True

	entry12a.CanReplicateOrCopyDocuments = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry12a= acl.GetEntry( "[Company-Admin-Advanced]" )

			Call entry12a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim June1 As New NotesACLEntry _

	( acl, "[Company-Admin-Advanced]", ACLLEVEL_READER)

	June1.UserType = ACLTYPE_MIXED_GROUP

	June1.IsPublicReader = True

	June1.CanReplicateOrCopyDocuments = True

	June1.IsPublicWriter = True

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry12a= acl.GetEntry( "[Company-Admin-Advanced]" )

			Call entry12a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'Prompt the user for a group who will own the database.

'Default entry calculates UK-(dbname)-Owner

Dim Owner1 As String

Dim DefaultOwner1 As String

Dim dbName As String

dbName = db.Title

DefaultOwner1  = "UK-" + dbName + "-DbOwner"



Dim macroStr2 As Variant

macroStr2 = Evaluate(|@ReplaceSubstring("|+ DefaultOwner1 + |"; " "; "")|)

DefaultOwner2 = Cstr(macroStr2(0))



Owner1 = workspace.Prompt (PROMPT_OKCANCELEDIT, _

"Please enter the name of the group who will own the database", _

"&[&For example UK-DbName-DbOwner&]&", _

"[" & DefaultOwner2 &"]")

'Next we will set the access as Person Editor With Delete

Set entry13a = acl.GetEntry( Owner1 )

If Not ( entry13a Is Nothing ) Then

	entry13a.Level = ACLLEVEL_EDITOR

	entry13a.UserType = ACLTYPE_PERSON_GROUP

	entry13a.IsPublicReader = True

	entry13a.IsPublicWriter = True

	entry13a.CanReplicateOrCopyDocuments = True

	entry13a.IsPublicWriter = True

	entry13a.CanCreateDocuments = True

	entry13a.CanDeleteDocuments = True

	entry13a.IsPublicReader = True

	entry13a.CanReplicateOrCopyDocuments = True

	entry13a.IsPublicWriter = True

	entry13a.CanCreatePersonalAgent = True

	entry13a.CanCreatePersonalFolder = True

	entry13a.CanCreatePersonalAgent = True

	entry13a.CanCreateLSOrJavaAgent = True

	entry13a.CanCreateSharedFolder = True

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry13a= acl.GetEntry( Owner1 )

			Call entry13a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim Donut1 As New NotesACLEntry _

	( acl, Owner1, ACLLEVEL_EDITOR)

	Donut1.UserType = ACLTYPE_PERSON_GROUP

	Donut1.IsPublicReader = True

	Donut1.CanReplicateOrCopyDocuments = True

	Donut1.IsPublicWriter = True

	Donut1.CanCreateDocuments = True

	Donut1.CanDeleteDocuments = True

	Donut1.IsPublicReader = True

	Donut1.CanReplicateOrCopyDocuments = True

	Donut1.IsPublicWriter = True

	Donut1.CanCreatePersonalAgent = True

	Donut1.CanCreatePersonalFolder = True

	Donut1.CanCreateLSOrJavaAgent = True

	Donut1.CanCreateSharedFolder = True

	Donut1.CanCreatePersonalAgent = True

	

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry13a= acl.GetEntry( Owner1 )

			Call entry13a.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

'New code to add a Reader's group, with no roles as Default

'Prompt the user for a group who will need reader access

'Default entry calculates UK-(dbname)-Reader

Dim Owner3 As String

Dim DefaultOwner3 As String

Dim dbName3 As String

dbName3 = db.Title

DefaultOwner3  = "UK-" + dbName3 + "-DbReaders"



Dim macroStr3 As Variant

macroStr3 = Evaluate(|@ReplaceSubstring("|+ DefaultOwner3 + |"; " "; "")|)

DefaultOwner3b = Cstr(macroStr3(0))



Owner3 = workspace.Prompt (PROMPT_OKCANCELEDIT, _

"Please enter the name of the group who will need reader access", _

"&[&For example UK-DbName-Readers&]&", _

"[" & DefaultOwner3b &"]")

'Next we will set the access as Person Group Reader No Delete Or Roles

Set entry13b = acl.GetEntry( Owner3 )

If Not ( entry13b Is Nothing ) Then

	entry13b.Level = ACLLEVEL_READER

	entry13b.UserType = ACLTYPE_PERSON_GROUP

	entry13b.IsPublicReader = True

	entry13b.IsPublicWriter = True

	entry13b.CanReplicateOrCopyDocuments = True

	

	Call acl.Save

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry13b= acl.GetEntry( Owner3 )

			Call entry13b.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

Else

	

	Dim Donut2 As New NotesACLEntry _

	( acl, Owner3, ACLLEVEL_READER)

	Donut2.UserType = ACLTYPE_PERSON_GROUP

	Donut2.IsPublicReader = True

	Donut2.CanReplicateOrCopyDocuments = True

	Donut2.IsPublicWriter = True

	

	Forall r In acl.Roles

		If doRolesExist(0)= "" Then 'Do Nothing

		Else

			Set entry13b= acl.GetEntry( Owner3 )

			Call entry13b.EnableRole(r)

		End If

	End Forall

	Call acl.Save

	

End If

Dim askme As Integer

askme = workspace.Prompt(PROMPT_OK, _

"ACL has been built", "Please note some adjustment may be neccessary according to specific requirements of each application")

End Sub

Subject: How to add/enable/disable/remove roles in ACL

Take a look at the designer help database. There are some examples how to modify the acl of a database. Also adding, removing and renaming roles and how to apply to user and groups.