1 UserId _userId = "IT001"; 2 UserGroupId _userGroupId = "ABC_1"; 3 DomainId _domainId="DH"; 4 DataAreaId _companyId = "CG"; 5 SecurityKeyset _SecurityKeyset; 6 AccessType _newAccessType = AccessType::Edit; 7 AccessType _curAccessType; 8 str _MenuItemName = "SalesTable"; 9 ; 10 11 _SecurityKeyset = new SecurityKeyset(); 12 //begin user group security set 13 _SecurityKeyset .loadGroupRights(_userGroupId ,_domainId); 14 //获取销售单画面的访问权限 15 _curAccessType = _SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay); 16 17 //给销售单画面赋权限 18 _SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay,_newAccessType ); //带第三个参数表示修改权限。 19 //Save 权限 20 xAccessRightsList::saveSecurityRights(se.packTouched(),_userGroupId , _domainId); 21 22 //begin user group security set 23 _SecurityKeyset .loadUserRights(_userId,_companyId ); 24 //获取用户销售单画面的访问权限 25 _curAccessType = _SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay); 26
若想将一个用户组的权限完全复制给另外一个用户组。
1 SecurityKeyset seSource; 2 3 UserGroupId groupSource,groupDest; 4 DomainId domainId = "DH"; 5 ; 6 groupSource = "Test1"; 7 groupDest ="Test2"; 8 seSource = new SecurityKeyset(); 9 seSource.loadGroupRights(groupSource,domainId); 10 11 xAccessRightsList::saveSecurityRights(seSource.packTouched(), groupDest, domainId );//复制到新组Test2
扩展一下,可以得到某对象所有用户组的权限,并导出到Excel,以供IT审计。这在权限检查中非常有用,节省一个个打开看的时间了。
另,在后头涉及到权限的table\AccessRightsList, 同时我们可以做一个hotfix,加一个新的table\AccessRightsListLog,记录用户对权限的修改,以便后面追查。
table\AccessRightsListLog表结构。
CREATE TABLE [dbo].[ACCESSRIGHTSLISTLOG]( [GROUPID] [nvarchar](10) NULL, [DOMAINID] [nvarchar](10) NULL, [RECORDTYPE] [int] NULL, [PARENTID] [int] NULL, [ID] [int] NULL, [ELEMENTNAME] [nvarchar](40) NULL, [ACCESSTYPE] [int] NULL, [ACCESSTYPEFKEYUSE] [int] NULL, [MODIFIEDDATE] [datetime] NULL, [MODIFIEDTIME] [int] NULL, [MODIFIEDBY] [nvarchar](5) NULL, [CREATEDDATE] [datetime] NULL, [CREATEDTIME] [int] NULL, [CREATEDBY] [nvarchar](5) NULL, [RECVERSION] [int] NULL, [RECID] [bigint] NULL, [USERID] [nvarchar](10) NULL, [LOGTYPE] [nvarchar](3) NULL, [LOGDATE] [datetime] NULL )
附AccessRightsList\RecordType的枚举值列表。
附AccessRightsList\AccessType的枚举值列表。
时间: 2024-10-29 19:11:25