コード例 #1
0
ファイル: RoleManager.cs プロジェクト: linoh/XrmToolBox
        /// <summary>
        /// Removes list of privileges to each role in the specified list
        /// </summary>
        /// <param name="privileges">List of privileges to remove</param>
        /// <param name="role">List of roles to update</param>
        public void RemovePrivilegesToRole(List <RolePrivilege> privileges, Entity role)
        {
            bool hasChanged = false;

            Guid roleId = (Guid)role["roleid"];

            // Retrieve the privileges for the current security role
            var request = new RetrieveRolePrivilegesRoleRequest {
                RoleId = roleId
            };
            var response =
                (RetrieveRolePrivilegesRoleResponse)innerService.Execute(request);
            List <RolePrivilege> rolePrivileges = response.RolePrivileges.ToList();

            // If the privilege exists in the privileges set of the security role,
            // we remove it
            foreach (RolePrivilege privilege in privileges)
            {
                var request3 = new RemovePrivilegeRoleRequest
                {
                    RoleId      = roleId,
                    PrivilegeId = privilege.PrivilegeId
                };

                innerService.Execute(request3);
            }
        }
コード例 #2
0
ファイル: RoleManager.cs プロジェクト: linoh/XrmToolBox
        public List <RolePrivilege> GetPrivilegesForRole(Guid roleId)
        {
            var request = new RetrieveRolePrivilegesRoleRequest {
                RoleId = roleId
            };
            var response = (RetrieveRolePrivilegesRoleResponse)innerService.Execute(request);

            return(response.RolePrivileges.ToList());
        }
コード例 #3
0
        private IEnumerable <RolePrivilege> GetRolePrivileges(Guid idRole)
        {
            var request = new RetrieveRolePrivilegesRoleRequest()
            {
                RoleId = idRole,
            };

            var response = (RetrieveRolePrivilegesRoleResponse)_service.Execute(request);

            return(response.RolePrivileges);
        }
コード例 #4
0
        /// <summary>
        /// Retrieve the <c>Privilege</c> that are assigned to the specified <c>Role</c>.
        /// <para>
        /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.replaceprivilegesrolerequest(v=crm.8).aspx
        /// </para>
        /// </summary>
        /// <param name="roleId">Role Id</param>
        /// <returns>
        /// <see cref="RolePrivilege"/> list for data
        /// </returns>
        public List <RolePrivilege> GetPrivilegesByRoleId(Guid roleId)
        {
            ExceptionThrow.IfGuidEmpty(roleId, "roleId");

            RetrieveRolePrivilegesRoleRequest request = new RetrieveRolePrivilegesRoleRequest()
            {
                RoleId = roleId
            };

            RetrieveRolePrivilegesRoleResponse serviceResponse = (RetrieveRolePrivilegesRoleResponse)this.OrganizationService.Execute(request);

            return(serviceResponse.RolePrivileges.ToList());
        }
コード例 #5
0
ファイル: RolesManager.cs プロジェクト: jefxiong/XrmToolBox
        public List <SecurityRole> GetRoles()
        {
            var list = new List <SecurityRole>();

            var qe = new QueryExpression("role")
            {
                Criteria = new FilterExpression(), ColumnSet = new ColumnSet(true)
            };

            qe.Criteria.AddCondition("parentroleid", ConditionOperator.Null);

            var roles = service.RetrieveMultiple(qe).Entities;

            foreach (var role in roles)
            {
                var sr = new SecurityRole
                {
                    Id         = role.Id,
                    Name       = role["name"].ToString(),
                    Privileges = new List <Privilege>()
                };

                var request = new RetrieveRolePrivilegesRoleRequest
                {
                    RoleId = role.Id
                };

                var response = (RetrieveRolePrivilegesRoleResponse)service.Execute(request);

                foreach (var roleprivilege in response.RolePrivileges)
                {
                    sr.Privileges.Add(new Privilege
                    {
                        Id    = roleprivilege.PrivilegeId,
                        Depth = roleprivilege.Depth
                    });
                }

                list.Add(sr);
            }

            return(list);
        }
コード例 #6
0
ファイル: RoleManager.cs プロジェクト: linoh/XrmToolBox
        /// <summary>
        /// Adds list of privileges to each role in the specified list
        /// </summary>
        /// <param name="privileges">List of privileges to add</param>
        /// <param name="role">List of roles to update</param>
        public void AddPrivilegesToRole(List <RolePrivilege> privileges, Entity role)
        {
            bool hasChanged = false;

            Guid roleId = (Guid)role["roleid"];

            // Retrieve the privileges for the current security role
            var request = new RetrieveRolePrivilegesRoleRequest {
                RoleId = roleId
            };
            var response =
                (RetrieveRolePrivilegesRoleResponse)innerService.Execute(request);
            List <RolePrivilege> rolePrivileges = response.RolePrivileges.ToList();

            // If the privilege isn't already in the current security role
            // privileges, it is added
            foreach (RolePrivilege privilege in privileges)
            {
                var rp = rolePrivileges.Find(x => x.PrivilegeId == privilege.PrivilegeId);
                if (rp == null)
                {
                    rolePrivileges.Add(privilege);
                    hasChanged = true;
                }
                else if (rp.Depth != privilege.Depth)
                {
                    rolePrivileges[rolePrivileges.IndexOf(rp)] = privilege;
                    hasChanged = true;
                }
            }

            // If some privileges have been added, we can update the security role
            if (hasChanged)
            {
                var apRequest = new ReplacePrivilegesRoleRequest
                {
                    RoleId     = roleId,
                    Privileges = rolePrivileges.ToArray()
                };

                innerService.Execute(apRequest);
            }
        }
コード例 #7
0
ファイル: RoleManager.cs プロジェクト: rehanhsyed/XrmToolBox
        /// <summary>
        /// Adds list of privileges to each role in the specified list
        /// </summary>
        /// <param name="privileges">List of privileges to add</param>
        /// <param name="role">List of roles to update</param>
        public void AddPrivilegesToRole(List<RolePrivilege> privileges, Entity role)
        {
            bool hasChanged = false;

            Guid roleId = (Guid)role["roleid"];

            // Retrieve the privileges for the current security role
            var request = new RetrieveRolePrivilegesRoleRequest { RoleId = roleId };
            var response =
                (RetrieveRolePrivilegesRoleResponse)innerService.Execute(request);
            List<RolePrivilege> rolePrivileges = response.RolePrivileges.ToList();

            // If the privilege isn't already in the current security role
            // privileges, it is added
            foreach (RolePrivilege privilege in privileges)
            {
                var rp = rolePrivileges.Find(x => x.PrivilegeId == privilege.PrivilegeId);
                if (rp == null)
                {
                    rolePrivileges.Add(privilege);
                    hasChanged = true;
                }
                else if (rp.Depth != privilege.Depth)
                {
                    rolePrivileges[rolePrivileges.IndexOf(rp)] = privilege;
                    hasChanged = true;
                }
            }

            // If some privileges have been added, we can update the security role
            if (hasChanged)
            {
                var apRequest = new ReplacePrivilegesRoleRequest
                                    {
                                        RoleId = roleId,
                                        Privileges = rolePrivileges.ToArray()
                                    };

                innerService.Execute(apRequest);
            }
        }
コード例 #8
0
ファイル: RolesManager.cs プロジェクト: neronotte/XrmToolBox
        public List<SecurityRole> GetRoles()
        {
            var list = new List<SecurityRole>();

            var qe = new QueryExpression("role") {Criteria = new FilterExpression(), ColumnSet = new ColumnSet(true)};
            qe.Criteria.AddCondition("parentroleid", ConditionOperator.Null);

            var roles = service.RetrieveMultiple(qe).Entities;

            foreach (var role in roles)
            {
                var sr = new SecurityRole
                             {
                                 Id = role.Id,
                                 Name = role["name"].ToString(),
                                 Privileges = new List<Privilege>()
                             };

                var request = new RetrieveRolePrivilegesRoleRequest
                                  {
                                      RoleId = role.Id
                                  };

                var response = (RetrieveRolePrivilegesRoleResponse) service.Execute(request);

                foreach (var roleprivilege in response.RolePrivileges)
                {
                    sr.Privileges.Add(new Privilege
                                          {
                                              Id = roleprivilege.PrivilegeId,
                                              Depth = roleprivilege.Depth
                                          });
                }

                list.Add(sr);
            }

            return list;
        }
コード例 #9
0
ファイル: RoleManager.cs プロジェクト: rehanhsyed/XrmToolBox
        /// <summary>
        /// Removes list of privileges to each role in the specified list
        /// </summary>
        /// <param name="privileges">List of privileges to remove</param>
        /// <param name="role">List of roles to update</param>
        public void RemovePrivilegesToRole(List<RolePrivilege> privileges, Entity role)
        {
            bool hasChanged = false;

            Guid roleId = (Guid)role["roleid"];

            // Retrieve the privileges for the current security role
            var request = new RetrieveRolePrivilegesRoleRequest { RoleId = roleId };
            var response =
                (RetrieveRolePrivilegesRoleResponse)innerService.Execute(request);
            List<RolePrivilege> rolePrivileges = response.RolePrivileges.ToList();

            // If the privilege exists in the privileges set of the security role,
            // we remove it
            foreach (RolePrivilege privilege in privileges)
            {
                var request3 = new RemovePrivilegeRoleRequest
                                   {
                                       RoleId = roleId,
                                       PrivilegeId = privilege.PrivilegeId
                                   };

                innerService.Execute(request3);
            }
        }
コード例 #10
0
ファイル: RoleManager.cs プロジェクト: rehanhsyed/XrmToolBox
 public List<RolePrivilege> GetPrivilegesForRole(Guid roleId)
 {
     var request = new RetrieveRolePrivilegesRoleRequest { RoleId = roleId };
     var response = (RetrieveRolePrivilegesRoleResponse)innerService.Execute(request);
     return response.RolePrivileges.ToList();
 }