Dynamics 365 JS中如何查詢使用者對實體是否有某個操作許可權
最近碰到幾個人問我,怎麼在js裡使用web api查詢當前使用者是否對某個實體有某某許可權,問我有沒有寫過類似的部落格,找了下還真沒有,那就補上。
直接上程式碼,主要用到了幾張表的聯合,關注程式碼中的fetchxml即可,兩個condition分別是當前使用者id和你要查詢的這個使用者的某個許可權,這個許可權的value值可以去資料庫的privilege這張表查
var userid = Xrm.Page.context.getUserId();
var quoteFetchXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>\
<entity name='systemuser'>\
<attribute name='systemuserid' />\
<link-entity name='systemuserroles' alias='a' from='systemuserid' to='systemuserid'>\
<link-entity name='role' alias='b' from='roleid' to='roleid'>\
<link-entity name='roleprivileges' alias='c' from='roleid' to='roleid'>\
<link-entity name='privilege' alias='d' from='privilegeid' to='privilegeid'>\
<filter type='and'>\
<condition attribute='name' operator='eq' value='prvReadLead'/>\
</filter>\
</link-entity>\
</link-entity>\
</link-entity>\
</link-entity>\
<filter type='and'>\
<condition attribute='systemuserid' operator='eq' value='"
+ userid + "'/>\
</filter>\
</entity>\
</fetch>";
var encodedFetchXML = encodeURIComponent(quoteFetchXML);
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/systemusers?fetchXml=" + encodedFetchXML, false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Prefer", "odata.include-annotations=\"OData.Community.Display.V1.FormattedValue\"");
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
}
}
};
req.send();
上面程式碼中的fetchxml只是使用者自身的許可權查詢,還有一個所屬團隊的許可權查詢,fetchxml如下
<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='systemuser'>
<attribute name='systemuserid' />
<link-entity name='teammembership' alias='a' from='systemuserid' to='systemuserid'>
<link-entity name='team' alias='e' from='teamid' to='teamid'>
<link-entity name='teamRoles' alias='f' from='teamid' to='teamid'>
<link-entity name='role' alias='b' from='roleid' to='roleid'>
<link-entity name='roleprivileges' alias='c' from='roleid' to='roleid'>
<link-entity name='privilege' alias='d' from='privilegeid' to='privilegeid'>
<filter type='and'>
<condition attribute='name' operator='eq' value='prvReadLead'/>
</filter>
</link-entity>
</link-entity>
</link-entity>
</link-entity>
</link-entity>
</link-entity>
<filter type='and'>
<condition attribute='systemuserid' operator='eq' value='FCCBB09D-D559-E811-80D4-0017FA01322A'/>
</filter>
</entity>
</fetch>
下面上兩張執行結果圖,下面這張是以管理員id執行,對lead是有讀許可權的
下面這張是換了個沒有許可權的賬號id,返回資料集就是空了
這裡要注意個問題,使用web api查詢執行程式碼的許可權用的是當前使用者自身的許可權,在你的實際業務場景中有可能當前賬號對使用者實體就沒讀許可權,那這段程式碼的執行就需要使用web api中的模擬使用者了,使用管理員的身份去執行。
相關文章
- 如何檢查某個使用者是否具有某個許可權物件上定義的某種許可權物件
- 如何檢查某使用者是否分配了某ABAP許可權物件物件
- Dynamics 365 Web Api 檢查使用者是否具有某個安全形色WebAPI
- MySQL如何查詢all有哪些許可權?MySql
- MySql查詢使用者許可權MySql
- UserService 查詢使用者查詢許可權 isGlobalQuery分析
- git 如何 實現 svn那樣對某個檔案的許可權?Git
- Dynamics 365 查詢型別的欄位,選擇介面要去掉新增按鈕,但是不能去掉新增許可權型別
- UserService 查詢使用者有許可權的關聯索引 queryIndexPatternByUserName分析索引Index
- UserService 查詢使用者沒許可權的索引,增加臨時許可權queryIndicesNoPermission分析索引
- UserService 修改使用者查詢許可權 changeGlobalQuery分析
- UserService 刪除使用者查詢許可權 deleteUserPermission分析delete
- python怎麼查詢字串中是否包含某個字串Python字串
- Linux 特殊許可權a,i,t,s以及查詢帶有特殊許可權的所有檔案Linux
- SQL2008查詢某資料庫中的某個值是否存在SQL資料庫
- Dynamics CRM 實體建立中的個人許可權與部門及上下級部門的區別
- 1.6.2. 許可權對應的操作
- MongoDB建立只讀使用者並授權指定集合的查詢許可權MongoDB
- mysql 8.0.21使用者及許可權操作MySql
- 設定root使用者有寫入和查詢hdfs上面檔案的許可權
- MYSQL學習筆記13: DCL許可權控制(使用者許可權操作)MySql筆記
- 使用LDAP查詢快速提升域許可權LDA
- 【USER】Oracle 一個普通使用者有多少許可權Oracle
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- 如何更改某個檔案的只讀許可權為可編輯許可權 張翠娉2022-07-20
- Linux雜記 查詢與特殊許可權位Linux
- 讓root使用者有super許可權
- win10軟體許可權怎麼設定_win10軟體系統許可權限制如何操作Win10
- mysql 給了使用者所有許可權ALL PRIVILEGES,但是該使用者沒有grant許可權MySql
- 做什麼操作會丟失其他使用者對錶的許可權
- Permission API 統一查詢許可權狀態API
- 如何檢視postgresql使用者許可權SQL
- 協同平臺檢視許可權開啟業務物件提示"當前使用者沒有許可權!請檢查使用者[BOS設計器]的[編輯]許可權與應用的編輯許可權!"物件
- Laravel 日誌有時候有許可權有時候沒有許可權?Laravel
- Dynamics 365 Web API模擬使用者WebAPI
- 如何查詢某個資料表中除某個欄位的所有資訊???
- js判斷物件裡面是否有某個屬性JS物件
- 檔案目錄許可權操作