Using system;
Using Microsoft. xrm. SDK;
Using Microsoft. CRM. SDK. messages;
Using system. Collections. Generic;
/// <Summary>
/// Security role
/// </Summary>
Public class rolehelper
{
Public static readonly string entityname = "role ";
Public guid roleid = guid. empty;
/// <Summary>
/// Create a security role
/// </Summary>
/// <Param name = "service"> service </param>
/// <Param name = "name"> role name </param>
/// <Param name = "unitid"> business department </param>
Public void create (iorganizationservice service, string name, guid unitid)
{
Entity en = new entity () {logicalname = entityname };
En ["name"] = Name;
En ["businessunitid"] = new entityreference () {logicalname = "businessunit", id = unitid };
Roleid = service. Create (en );
}
/// <Summary>
/// Modify the security role
/// </Summary>
/// <Param name = "service"> service </param>
/// <Param name = "name"> role name </param>
/// <Param name = "unitid"> business department </param>
Public void Update (iorganizationservice service, string name, guid unitid)
{
Entity en = new entity () {logicalname = entityname, id = roleid };
En ["name"] = Name;
En ["businessunitid"] = new entityreference () {logicalname = "businessunit", id = unitid };
Service. Update (en );
}
/// <Summary>
/// Add permissions to the security role
/// </Summary>
/// <Param name = "service"> service </param>
/// <Param name = "businessunitid"> business department ID </param>
/// <Param name = "privilegeid"> permission id </param>
Public void addprivilegesrole (iorganizationservice service, guid businessunitid, guid privilegeid)
{
Addprivilegesrolerequest request = new addprivilegesrolerequest ();
Request. roleid = roleid;
Roleprivilege Rp = new roleprivilege ();
// Basic: 1/4, local: 1/2, deep: 3/4, Global: 4/4 Organization
RP. Depth = privilegedepth. Basic;
// Permission
RP. privilegeid = privilegeid;
// Business department
RP. businessunitid = businessunitid;
// Permission
Request. Privileges = new roleprivilege [] {RP };
Service. Execute (request );
}
/// <Summary>
/// Remove permissions from the security role
/// </Summary>
/// <Param name = "service"> service </param>
/// <Param name = "privilergeid"> security role </param>
Public void removeprivilegerole (iorganizationservice service, guid privilergeid)
{
Removeprivilegerolerequest rolerequest = new removeprivilegerolerequest ();
Rolerequest. roleid = roleid;
Rolerequest. privilegeid = privilergeid;
Service. Execute (rolerequest );
}
/// <Summary>
/// Security role replacement permission (delete previous roles and add existing roles)
/// </Summary>
/// <Param name = "service"> service </param>
/// <Param name = "businessunitid"> business department ID </param>
/// <Param name = "privilegeid"> permission id </param>
Public void replaceprivilegerpole (iorganizationservice service, guid businessunitid, guid privilegeid)
{
Replaceprivilegesrolerequest rolerequest = new replaceprivilegesrolerequest ();
Rolerequest. roleid = roleid;
Roleprivilege Rp = new roleprivilege ();
// Basic: 1/4, local: 1/2, deep: 3/4, Global: 4/4 Organization
RP. Depth = privilegedepth. Basic;
// Permission
RP. privilegeid = privilegeid;
// Business department
RP. businessunitid = businessunitid;
// Permission
Rolerequest. Privileges = new roleprivilege [] {RP };
Service. Execute (rolerequest );
}
/// <Summary>
/// Retrieve the permissions assigned to a specified role
/// </Summary>
/// <Param name = "service"> service </param>
Public void searchprivilegerole (iorganizationservice Service)
{
Retrieveroleprivilegesrolerequest request = new retrieveroleprivilegesrolerequest ();
Request. roleid = roleid;
Replaceprivilegesroleresponse response = (replaceprivilegesroleresponse) service. Execute (request );
If (response! = NULL & response. Results! = NULL ){
Parametercollection result = response. results;
}
}
/// <Summary>
/// Delete a security role
/// </Summary>
/// <Param name = "service"> service </param>
Public void Delete (iorganizationservice Service)
{
Service. Delete (entityname, roleid );
}
}