获得AX Role下面的duties和privileges 列表
来源:互联网 发布:印度与中国知乎 编辑:程序博客网 时间:2024/06/08 02:38
Use the below job to get list of duties and privileges under one or more roles
原文来自:http://community.dynamics.com/ax/b/mukeshhirwani_dynamicsax/archive/2015/05/11/list-of-duties-and-privileges-under-a-role
static void SNP_getAllDutiesAndPrivilidgesUnderRole(Args _args){ str fileName = @"C:\Users\<span style="font-family:Consolas;font-size:12px;color:#8b0000;">[UserId]</span>\Desktop\allDutiesAndPrivilidgesUnderRole.csv"; CommaTextIo commaTextIo; FileIOPermission permission; SecurityTaskEntryPoint taskEntryPoint; SecurityRole role; SecurityRoleTaskGrant taskGrant; SecuritySubTask subTask; SecurityTask privilege; SecurityTask securityTask; SecurableObject securableObject; DictEnum dictEnum; str privAOTName; str dutyAOTName; str privName; str dutyName; str entrName; str accessLevel; str menuItemType; FromTime startTime = timeNow(); #File ; permission = new FileIOPermission(fileName,#io_write); permission.assert(); commaTextIo = new CommaTextIo(fileName,#io_write); //Header commaTextIo.write( "Role AOT name", "Description", "Duty AOT name", "Description", "Privilidge AOT name", "Description", "Entry point", "Type", "Access level"); while select taskEntryPoint join subTask where subTask.SecuritySubTask == taskEntryPoint.SecurityTask join taskGrant where taskGrant.SecurityTask == subTask.SecurityTask join role where role.RecId == taskGrant.SecurityRole //&& role.AotName like 'Sales*' //|| role.AotName like 'System*' { menuItemType = ""; dutyAOTName = ""; dutyName = ""; privAOTName = ""; privName = ""; if (subTask.RecId) { switch (taskEntryPoint.PermissionGroup) { case AccessRight::View: accessLevel = "Read"; break; case AccessRight::Edit: accessLevel = "Update"; break; case AccessRight::Add: accessLevel = "Create"; break; case AccessRight::Delete: accessLevel = "Delete"; break; default: accessLevel = ""; break; } } select privilege where privilege.RecId == taskGrant.SecurityTask && SecurityTaskType::Duty == privilege.Type; dutyAOTName = privilege.AotName; dutyName = privilege.Name; select privilege where privilege.RecId == subTask.SecuritySubTask && SecurityTaskType::Privilege == privilege.Type; privAOTName = privilege.AotName; privName = privilege.Name; select RecId, Type, Name from securableObject where securableObject.RecId == taskEntryPoint.EntryPoint && (securableObject.Type == SecurableType::MenuItemDisplay || securableObject.Type == SecurableType::MenuItemAction || securableObject.Type == SecurableType::MenuItemOutput); dictEnum = new DictEnum(enumNum(MenuItemType)); menuItemType = dictEnum.index2Name(securableObject.Type); commaTextIo.write(role.AotName, role.Name, dutyAOTName, dutyName, privAOTName, privName, securableObject.Name, menuItemType, accessLevel); } //sometimes a role has a privielge direclty assigned instead of a duty. So this code is for those privileges. //In this case duty will not exist. while select SecurityTask, SecurityRole from taskGrant join RecId, Type, AOTName from securitytask where securityTask.RecId == taskGrant.SecurityTask && taskGrant.SecurityRole == taskGrant.SecurityRole && securitytask.Type == SecurityTaskType::Privilege join securityTask, EntryPoint from taskEntryPoint where taskEntryPoint.SecurityTask == securitytask.RecId { menuItemType = ""; dutyAOTName = ""; dutyName = ""; privAOTName = ""; privName = ""; select RecId, Type, Name from securableObject where securableObject.RecId == taskEntryPoint.EntryPoint && (securableObject.Type == SecurableType::MenuItemDisplay || securableObject.Type == SecurableType::MenuItemAction || securableObject.Type == SecurableType::MenuItemOutput); if(securableObject) { select privilege where privilege.RecId == securityTask.RecId && SecurityTaskType::Privilege == privilege.Type; privAOTName = privilege.AotName; privName = privilege.Name; dictEnum = new DictEnum(enumNum(MenuItemType)); menuItemType = dictEnum.index2Name(securableObject.Type); commaTextIo.write(role.AotName, role.Name, dutyAOTName, dutyName, privAOTName, privName, securableObject.Name, menuItemType, accessLevel); } } CodeAccessPermission::revertAssert(); info(strFmt("Total time: %1", timeConsumed(startTime, timeNow())));}
0 0
- 获得AX Role下面的duties和privileges 列表
- 在AX中获得电脑屏幕的宽度和高度
- Duties
- 获得文件夹下面文件列表,并删除多余的文件
- 汇编中OR AX, AX 和 AND AX, AX的作用
- 获得项目的所有控制器和方法下面的方法
- getrlimit和setrlimit 获得linux下面的进程可用资源
- getrlimit和setrlimit 获得linux下面的进程可用资源
- maven project 下面的子元素列表和说明
- 汇编push ds;sub ax,ax;push ax和ret的作用
- AX中获得Excel版本号
- 开发自定义Membership和Role的Provider
- 获得android下面,所有的数据库
- 获得Assets目录下面的url
- 下面的例子演示如何通过 jQuery text() 和 html() 方法来获得内容:
- 根据后台账户权限role name 得到这个权限下面的所有的后台账户
- Dynamics AX 2009: Preparing Role Center Deployment BACKGROUND
- 获得当前进程的列表
- SolrCloud搭建
- 设置圆角按钮按下时背景改变
- Netty入门到精通课程|物联网视频教程
- Gauss消去法求线性方程组
- 双4G LTE
- 获得AX Role下面的duties和privileges 列表
- myeclipse 自动提示
- 【android学习】自定义view属性
- linux source 命令
- Android 使用SharedPreferences数据存储
- C++ Rand()各种实现
- "Could not find or load main class" in Hadoop or Java using Maven
- socket 传文件
- hdu 5400 Arithmetic Sequence