Role Helper

using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk.Messages;
using System.Collections.Generic;

/// <summary>
/// 安全角色
/// </summary>
public class RoleHelper
{
    public static readonly string entityName = "role";
    public Guid roleId = Guid.Empty;

    /// <summary>
    /// 创建安全角色
    /// </summary>
    /// <param name="service">服务</param>
    /// <param name="name">角色名称</param>
    /// <param name="unitId">业务部门</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>
    /// 修改安全角色
    /// </summary>
    /// <param name="service">服务</param>
    /// <param name="name">角色名称</param>
    /// <param name="unitId">业务部门</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>
    /// 给安全角色添加权限
    /// </summary>
    /// <param name="service">服务</param>
    /// <param name="businessUnitId">业务部门id</param>
    /// <param name="privilegeId">权限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 组织
        rp.Depth = PrivilegeDepth.Basic;
        //权限
        rp.PrivilegeId = privilegeId;
        //业务部门
        rp.BusinessUnitId = businessUnitId;
        //权限
        request.Privileges = new RolePrivilege[] { rp };

        service.Execute(request);
    }

    /// <summary>
    /// 给安全角色移除权限
    /// </summary>
    /// <param name="service">服务</param>
    /// <param name="privilergeId">安全角色</param>
    public void RemovePrivilegeRole(IOrganizationService service, Guid privilergeId)
    {
        RemovePrivilegeRoleRequest roleRequest = new RemovePrivilegeRoleRequest();
        roleRequest.RoleId = roleId;
        roleRequest.PrivilegeId = privilergeId;
        service.Execute(roleRequest);
    }

    /// <summary>
    /// 安全角色替换权限(删除以前的角色,添加现有的角色)
    /// </summary>
    /// <param name="service">服务</param>
    /// <param name="businessUnitId">业务部门id</param>
    /// <param name="privilegeId">权限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 组织
        rp.Depth = PrivilegeDepth.Basic;
        //权限
        rp.PrivilegeId = privilegeId;
        //业务部门
        rp.BusinessUnitId = businessUnitId;
        //权限
        roleRequest.Privileges = new RolePrivilege[] { rp };

        service.Execute(roleRequest);
    }

    /// <summary>
    /// 检索分派给指定角色的权限
    /// </summary>
    /// <param name="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>         /// 
    /// 删除安全角色         /// 
    /// </summary>         /// 
    /// <param name="service">服务</param>         
    public void Delete(IOrganizationService service) { service.Delete(entityName, roleId); }
}

猜你喜欢

转载自www.cnblogs.com/bennylam/p/9921515.html