The product that used to be called Microsoft Dynamics 365 for Finance and Operations (I truly don’t know how I should call it these days) allows defining security elements both by developers (delivered together with code) and by power users though GUI (stored in database). You may have a need to work with security objects in code and you want to get information from both sources. An API providing a unified view would be handy.
I’m not going to cover it in detail, but let me show you an example: an iteration of security privileges and getting information about security permissions contained in privileges:
using Microsoft.Dynamics.AX.Security.Management.Domain; class SecurityApiDemo { public static void main(Args _args) { var privilegesRepo = SysSecurity::GetSecurityRepository().Privileges; var privEnumerator = privilegesRepo.LoadAll().GetEnumerator(); while (privEnumerator.MoveNext()) { Privilege privilege = privEnumerator.Current; setPrefix(strFmt("Privilege %1", privilege.Name)); var grantEnumerator = privilege.ActionMenuItemGrants.GetEnumerator(); while (grantEnumerator.MoveNext()) { MenuItemGrant grant = grantEnumerator.Current; info(strFmt("%1 (%2)", grant.Name, grant.Grant.ToString())); } } } }
Apart from ActionMenuItemGrants, there are also DisplayMenuItemGrants, OutputMenuItemGrants, DataEntityGrants, ServiceOperationGrants and DataModelGrants.
Hi ! How did you find the “LoadAll” method for the IReadOnlyPrivilegeRepository object ?
VisualStudio doesn’t give any hint on any method to call and I can’t find any documented api online.
Thanks for the great work !
Hi, Thank you,
How can i get all security privileges for a sepcifc security role by using the same API ?
Or how can i get all permission associated to a specific security role