Dynamic AX 4.0 用户组权限SecurityKey
UserId _userId = "IT001";
UserGroupId _userGroupId = "ABC_1";
DomainId _domainId="DH";
DataAreaId _companyId = "CG";
SecurityKeyset _SecurityKeyset;
AccessType _newAccessType = AccessType::Edit;
AccessType _curAccessType;
str _MenuItemName = "SalesTable";
; _SecurityKeyset = new SecurityKeyset();
//begin user group security set
_SecurityKeyset .loadGroupRights(_userGroupId ,_domainId);
//获取销售单画面的访问权限
_curAccessType = _SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay); //给销售单画面赋权限
_SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay,_newAccessType ); //带第三个参数表示修改权限。
//Save 权限
xAccessRightsList::saveSecurityRights(se.packTouched(),_userGroupId , _domainId); //begin user group security set
_SecurityKeyset .loadUserRights(_userId,_companyId );
//获取用户销售单画面的访问权限
_curAccessType = _SecurityKeyset.menuItemAccess(_MenuItemName , AccessRecordType::MenuItemDisplay);
若想将一个用户组的权限完全复制给另外一个用户组。
SecurityKeyset seSource; UserGroupId groupSource,groupDest;
DomainId domainId = "DH";
;
groupSource = "Test1";
groupDest ="Test2";
seSource = new SecurityKeyset();
seSource.loadGroupRights(groupSource,domainId); xAccessRightsList::saveSecurityRights(seSource.pack(), 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的枚举值列表。

Dynamic AX 4.0 用户组权限SecurityKey的更多相关文章
- 20140425 malloc和new不同 dynamic何时返回0
1.malloc/free和new/delete区别 http://blog.csdn.net/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释 ...
- 修改webserver站点用户组权限
例如webserver站点目录为webtest 搭建nginxwebserver服务器的时候,默认的用户和用户组权限为nginx:nginx, 即nginx.conf 和php-frm.conf 中默 ...
- Android 6.0 - 动态权限管理的解决方案
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应 ...
- Report processing of Microsoft Dynamic AX
Report processing of Microsoft Dynamic AX 版权声明:本文为博主原创文章,未经博主允许不得转载. The implementation of a general ...
- Android6.0获取权限
照着<第一行代码>打代码,然并卵,感叹技术进步的神速.最后提醒一点:IT类的书籍一定要注意出版时间!出版时间!出版时间!重要的事情说三遍 问题出在android6.0的权限获取问题上,以前 ...
- xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)
xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...
- MongoDB 3.0安全权限访问控制(Windows版)
MongoDB 3.0安全权限访问控制(Windows版) 1.首先,不使用 –auth 参数,启动 mongoDB: mongod --dbpath "d:\mongodb\data\db ...
- Android 6.0之权限管理
安卓6.0的权限体系分为非敏感权限和敏感权限,非敏感权限默认获取,可以手动关闭. 敏感权限必须由app在运行时动态申请.而存储读写空间权限是一个敏感权限,不是一个“很正常的必须权限”. 安卓并不是想要 ...
- Android 6.0的权限问题
Android 6.0的权限获取不同于别的版本,具体的实例如下: if (ContextCompat.checkSelfPermission(this, Manifest.permission.REA ...
随机推荐
- storm概念学习及流处理与批处理的区别
在过去10 年中,随着互联网应用的高速发展,企业积累的数据量越来越大,越来越多.随着Google MapReduce.Hadoop 等相关技术的出现,处理大规模数据变得简单起来,但是这些数据处理技术都 ...
- lower_bound实现函数
lower_bound实现 [参考链接]lower_bound二分的三种写法 我在以前,总是用lower_bound,现在发现这样不行,有些复杂的数据结构二分的时候用这个会很麻烦,不如手写二分,我接着 ...
- POJ 1740 A New Stone Game(普通博弈)
A New Stone Game 题意: 对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆.最后谁无子可取即输 ...
- NeHe OpenGL教程 第二十一课:线的游戏
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Linux命令(20)查看当前网速
Linux查看网络即时网速 sar -n DEV 1 100 1代表一秒统计并显示一次 100代表统计一百次 还可以使用ntop工具
- Mac下java编译乱码(适用于maven , ant)
将~/.bash_profile中添加如下即可 export LC_ALL=en
- mongoDB索引使用
for(var i=0;i<10000;i++){ db.user.insert({name:"user"+i,age:i}) }添加这么多数据 db.user.find({ ...
- Python进阶09 动态类型
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢TeaEra, 猫咪cat 动态类型(dynamic typing)是Pyth ...
- RunJS - 在线编辑、展示、分享、交流你的 JavaScript 代码
发现一个很好玩,很强大的网站 RunJS - 在线编辑.展示.分享.交流你的 JavaScript 代码 http://runjs.cn/ 比如: http://runjs.cn/detail/l ...
- HTMLParser使用详解(3)- 通过Filter访问内容
HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果.HTMLParser访问结果内容的方法有两种.使用Filter和使用Visitor. (一)Filter类顾名思义,Filter就 ...