|
RDOACL object represents the Access
Control List (ACL) of an Exchange folder. This object along with the
RDOACE object (representing an ACL entry) allows to
define the list of Exchange users who have access to a given folder.
Returned by:
RDOFolder.ACL
The example below logs to the default
MAPI session and adds an Exchange user to a list of users who have access to the
Calendar folder. The user is given the editor rights.
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderCalendar)
'make sure we get back an Exchange user
set AddressEntry = Session.AddressBook.GAL.ResolveName("natalia")
set ACE = Folder.ACL.Add(AddressEntry)
ACE.Rights = ROLE_PUBLISH_EDITOR |
The following example logs to the
default MAPI session and enumerates all users who have access to the Calendar folder
along with their rights
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderCalendar)
for each ACE in Folder.ACL
Debug.Print ACE.Name & " - " & ACE.Rights
next |
|
Derived from:
IDispatch
|
|
|
Properties |
|
BatchMode |
Boolean, read/write.
ACL is saved automatically when an ACE (RDOACE
object) is modified. Modifying a large number of ACEs in a folder thus
represented a major performance problem. When BatchMode
property is set to true, ACL will be saved only when
RDOACL.Save method is called.
See Save method below.
|
ROLE_PUBLISH_EDITOR = &H4FB
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
set ACL = Folder.ACL
ACL.BatchMode = true
'select new members and add them
set ABDialog = Session.GetSelectNamesDialog
ABDialog.AllowMultipleSelection = true
ABDialog.ToLabel = "Members"
ABDialog.InitialAddressList = Session.AddressBook.GAL
ABDialog.ForceResolution = true
ABDialog.NumberOfRecipientSelectors = 1
ABDialog.ShowOnlyInitialAddressList = true
'make sure the existing members are shown by the address book
for each ACE in ACL
if (not ACE.IsDefault) and (not ACE.IsAnonymous) Then
'otherwise there is no
corresponding address entry
ABDialog.Recipients.Add(ACE.AddressEntry)
End If
next
'display the address book
if ABDialog.Display Then
'add each selected member as a publishing
editor
for each recip in ABDialog.Recipients
set ACE = ACL.Add(recip.AddressEntry)
ACE.Rights =
ROLE_PUBLISH_EDITOR
next
'all done, save
ACL.Save
End If
|
Count |
integer, read-only. Returns
the number of folders in the list |
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetFolderFromID(MAPIFolder.EntryID)
for i = 1 to Folder.ACL.Count
set ACE = Folder.ACL.Item(i)
Debug.Print ACE.Name & " - " & ACE.Rights
next |
_Item(Index) |
returns
RDOACE object with a given index. Default object property.
Index - integer, 1
through Count. |
see the example above |
Folder |
Returns the parent folder (RDOFolder
object) |
|
RawTable |
IUnknown, read-only. Returns
the IMAPITable Extended MAPI interface used internally by the RDOACL
collection |
|
Session |
RDOSession, read-only. Returns the parent MAPI session represented
by the RDOSession object |
|
MAPITable |
MAPITable, read-only. Returns the MAPITable Redemption object which
can be used to manipulate the collection (restrict, find, etc). |
|
|
Methods |
|
Add(AddressEntryObjOrEntryID) |
Adds an Exchange user to the
folder ACL list. Returns the RDOACE object.
AddressEntryObjOrEntryID
- variant. Either an RDOAddressEntry
object or a (hex) string representing an Exchange user's entry id. |
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderCalendar)
'make sure we get back an Exchange user
set AddressEntry = Session.AddressBook.GAL.ResolveName("natalia")
set ACE = Folder.ACL.Add(AddressEntry)
ACE.Rights = ROLE_PUBLISH_EDITOR |
Item(Index) |
returns
RDOACE object with a given index.
Index - integer, 1
through Count. |
|
Remove(Index) |
Removes an ACL entry with a
given index.
Index - integer, 1
through Count. |
|
Save
|
Saves the ACL.
Applicable only when BatchMode property is set to true.
|
See BatchMode example above |
ACEofAddressEntry(AddressEntryObjOrEntryID) |
Returns an
RDOACE object corresponding to a given Exchange
user. If the user is not in the ACL list, NULL is returned.
AddressEntryObjOrEntryID
- variant. Either an RDOAddressEntry
object or a (hex) string representing an Exchange user's entry id. |
'check if a given Exchange
user is in the ACL list
'and remove it
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderCalendar)
set AddressEntry = Session.AddressBook.GAL.ResolveName("natalia")
set ACE = Folder.ACL.ACEofAddressEntry(AddressEntry)
if not (ACE is Nothing) Then
ACE.Delete
'or one can set the ACE.Rights property to RIGHTS_NONE (0)
End If |
|