2012-11-16 49 views

回答

1

我在這裏找到:http://arsalanax.blogspot.be/2012/02/role-based-security-in-ax.html

角色都存儲在SecurityRole

用戶到角色映射在SecurityUserRole

職責存儲在SecurityTask

&特權

責任映射存儲在特權SecuritySubTask

職責mappin GS被存儲在SecurityRoleTaskGrant

UPDATE(查詢添加)

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)); 
} 
1

安全職責是在表SecurityTask與第一類型等於1(SecurityTaskType ::工作狀態)。

安全特權是在表SecurityTask與類型等於0(SecurityTaskType ::特權)

安全處理週期在表SecurityTask與類型等於2(SecurityTaskType :: ProcessCycle)。

所有這些對象也在表(或更確切地說是查看)SysModelElement(職責與元素類型== 135)。

+0

請看看我上面的答案。我可以在加入語句中引用SecurityTask來獲取aotName,對吧? – SamekaTV

+0

你需要加入嗎? 'SecurityTask'上的單個選擇就足夠了。你想做什麼?我看不到加入或選擇你的答案。 –

+0

我試圖從多個角色的權限中獲取入口點。在AOT中 - 入口點是在特權下找到的,特權是在職責和責任下發現的。這是我組織訪問權限的方式。請查看我的答案,該答案已隨查詢更新。 – SamekaTV