您的位置:首页 > 其它

Dynamics CRM 根据用户权限不同来进行按钮的显示和隐藏的功能

2017-08-17 10:33 831 查看
注:本人刚接触Dynamics CRM不久,也是个小白,写的内容算是自己做的笔记,也给新人一些参考,写的不对或者不好的地方请指出来,大家一起学习, 有问题可在下方评论,大神勿喷。

上一篇文章Dynamics CRM 365 Button自定义之RibbonWorkbench2016介绍了通过RibbonWorkbench 自定义Button,接下来我们将根据用户角色来显示和隐藏当前Button。

首先来看一张最后的效果图,当前具有系统管理员和销售员角色权限的情况,可以看到这里显示了百度MAP这个按钮。



下面将进行我们的操作,首先还是进入到我们的RibbonWorkbench解决方案里面,[注:选择Solution时,当前Solution必须包含需要操作的Entity] 第一步选择你要操作的Entity ,然后选择要操作的Button,这里我们需要对Button进行启用和禁用,我们选择Enable Rule 点击加号。



添加一个步骤,选择Custom Rule 自定义规则。



这里我们让他默认为false,FunctionName为你js定方法名,Library为你上传在Solution的js文件



下面是js代码

var role=false;
function ShowRoleForBaidu()
{

var RoleId=Xrm.Page.context.getUserRoles();//获取当前的权限id
//alert(RoleId);
//有时候我们获取的id加了{}了的,这时候我们需要将它转换一下
// var newRoleId=RoleId.replace(/^{/, "").replace(/}$/, "");

for (var i=0;i<RoleId.length;i++) {
//之所以用for是因为当前的用户可能不止一个角色,我们需要将他遍历出来。
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/roles(" + RoleId[i] + ")?$select=name", false);//true是异步,false是同步
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function () {

if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {//200执行成功且有返回值
var result = JSON.parse(this.response);
var name = result["name"];
if (name == "销售员") {
role = true;
}

} else {
var error = JSON.parse(this.response).error;
Xrm.Utility.alertDialog(this.statusText + error.message+"错误");
}
}
};
req.send();
}
return role;
}


接下来我们打开当前Button command指令,将我们创建的Enable Rule 添加进去



添加完成后



设置>安全性>用户 选中我们当前的用户 ,点击管理角色,将我们的售货员的角色的勾去掉,点击确定。

【友情提示:在没有备用具有系统管理员角色的用户时,千万不要将系系统管理员的角色删掉,不然。。。 嘿嘿 ,你自己去想想吧,别问我为什么要提示你们,宝宝想哭,,,】



大功告成,这里的Button已经不显示了,当用户具有售货员角色的时候就会重新显示了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Dynamics CRM button 权限
相关文章推荐