我想访问安全职责(在代码中),但我不知道它们存储在哪里(在哪个表中)?
权限存储在 SecurityTask 中,现在我需要知道职责存储在 AX 2012 中的位置。
谢谢你。
我想访问安全职责(在代码中),但我不知道它们存储在哪里(在哪个表中)?
权限存储在 SecurityTask 中,现在我需要知道职责存储在 AX 2012 中的位置。
谢谢你。
我在这里找到它:http: //arsalanax.blogspot.be/2012/02/role-based-security-in-ax.html
角色存储在 SecurityRole 中
SecurityUserRole 中的用户到角色映射
存储在 SecurityTask 中的职责和权限
权限映射的职责存储在 SecuritySubTask 中
角色到职责的映射存储在 SecurityRoleTaskGrant
更新(已添加查询)
SecurityTaskEntryPoint taskEntryPoint;
SecurityRole role;
SecurityRoleTaskGrant taskGrant;
SecuritySubTask subTask;
SecurityTask privilege;
str privName;
str dutyName;
str entrName;
str accessLevel;
;
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*'
{
if (subTask.RecId)
{
switch (taskEntryPoint.PermissionGroup)
{
case AccessRight::View:
accessLevel = "R";
break;
case AccessRight::Edit:
accessLevel = "U";
break;
case AccessRight::Add:
accessLevel = "C";
break;
case AccessRight::Delete:
accessLevel = "D";
break;
default:
accessLevel = "";
break;
}
}
select privilege
where privilege.RecId == taskGrant.SecurityTask
&& SecurityTaskType::Duty == privilege.Type;
dutyName = privilege.AotName;
select privilege
where privilege.RecId == subTask.SecuritySubTask
&& SecurityTaskType::Privilege == privilege.Type;
privName = privilege.AotName;
info(strFmt("EP: %1, Pr: '%2', Du: %3, Ro: %4, Ac: %5", taskEntryPoint.EntryPoint, privName, dutyName, role.AotName, accessLevel));
}
安全职责在表中SecurityTask
,类型等于 1 (SecurityTaskType::Duty)。
安全权限在SecurityTask
类型等于 0 的表中 (SecurityTaskType::Privilege)
安全进程周期在表中SecurityTask
,类型等于 2 (SecurityTaskType::ProcessCycle)。
所有这些对象也在表中(或者更确切地说是视图)SysModelElement
(ElementType == 135 的职责)。