मैट जवाब के अनुसार
:
- इकाई विशेषाधिकार
- इकाई roleprivilege पर शामिल हों पर पुन: प्राप्त करें जहां privilege.privilegeid = roleprivilege.privilegeid
- इकाई systemuserrole पर शामिल हों जहां systemuserrole.roleid = roleprivileges.roleid और systemuserrole.systemuserid = (प्रश्न में उपयोगकर्ता की GUID)
- तो या तो विशेषाधिकार के माध्यम से पुनरावृति या विशेषाधिकार के लिए देखने के लिए जहां privilege.name = "prvReadMyEntityName"
तुम बस मिलती करते हैं और जोड़ने के लिए है आप जिस खंड की परवाह करते हैं। इस सीआरएम, या क्वेरी भाव, या यहाँ तक OData को XML, या LINQ में लाएं का उपयोग
SELECT Privilege.*
FROM Privilege
INNER JOIN RolePrivilege ON Privilege.PrivilegeId = RolePrivilege.PrivilegeId
INNER JOIN SystemUserRole ON SystemUserRole.RoleId = RolePrivileges.RoleId AND SystemUserRole.SystemUserId = (user's GUID)
-- WHERE Add whatever constraints on the Privilege entity that you need
आप प्रदर्शन कर सकते हैं: यहाँ समतुल्य एसक्यूएल है।
// Requesting user's access rights to current record
var principalAccessRequest = new RetrievePrincipalAccessRequest
{
Principal = new EntityReference("systemuser", localContext.PluginExecutionContext.UserId),
Target = new EntityReference(localContext.PluginExecutionContext.PrimaryEntityName, localContext.PluginExecutionContext.PrimaryEntityId)
};
// Response will contain AccessRights mask, like AccessRights.WriteAccess | AccessRights.ReadAccess | ...
var principalAccessResponse = (RetrievePrincipalAccessResponse)localContext.OrganizationService.Execute(principalAccessRequest);
if ((principalAccessResponse.AccessRights & AccessRights.WriteAccess) != AccessRights.None)
{
...
...
...
}
if
बयान के अंदर कोड उपयोगकर्ता मौजूदा रिकॉर्ड को WriteAccess
है अगर निष्पादित किया जाएगा: -
यह मूल उपयोगकर्ता जानकारी देता है, न कि उनके विशेषाधिकार – Daryl
अच्छा बिंदु @Daryl – Bvrce