public static bool GetCanBeDepth(SecurityPrivilegeMetadata priv, PrivilegeDepthExtended privilegeDepth)
        {
            switch (privilegeDepth)
            {
            case PrivilegeDepthExtended.None:
                return(true);

            case PrivilegeDepthExtended.Basic:
                return(priv.CanBeBasic);

            case PrivilegeDepthExtended.Local:
                return(priv.CanBeLocal);

            case PrivilegeDepthExtended.Deep:
                return(priv.CanBeDeep);

            case PrivilegeDepthExtended.Global:
                return(priv.CanBeGlobal);

            default:
                break;
            }

            return(false);
        }
        public RoleRange GetPrivilegeRange(EntityMetadata entity, KeyValuePair <ModelRole, List <ModelRolePrivilege> > privilege, PrivilegeType type)
        {
            SecurityPrivilegeMetadata entityPrivigle = entity.Privileges.Where(p => p.PrivilegeType == type).FirstOrDefault();

            if (entityPrivigle == null)
            {
                return(RoleRange.None);
            }
            ModelRolePrivilege rolePrivigle = privilege.Value.Where(model => model.PrivilegeId == entityPrivigle.PrivilegeId).FirstOrDefault();

            if (rolePrivigle == null)
            {
                return(RoleRange.None);
            }
            ModelDepthMask depthMask = Dictionary.DepthMasks.Where(model => (int)model.Value == rolePrivigle.Mask).FirstOrDefault();

            return(depthMask.RoleRange);
        }
예제 #3
0
        /// <summary>
        /// Add a privilege to the current role.
        /// </summary>
        /// <param name="Service">Organization Service</param>
        /// <param name="EntityLogicalName">Entity Logical Name</param>
        /// <param name="Type">Privilege Type</param>
        /// <param name="Depth">Privilege Level</param>
        public void AddPrivilege(IOrganizationService Service, string EntityLogicalName, PrivilegeType Type, PrivilegeDepth Depth)
        {
            RetrieveEntityRequest RERequest = new RetrieveEntityRequest()
            {
                LogicalName = base.LogicalName, EntityFilters = Microsoft.Xrm.Sdk.Metadata.EntityFilters.Privileges
            };
            RetrieveEntityResponse REResponse = Service.Execute(RERequest) as RetrieveEntityResponse;

            SecurityPrivilegeMetadata Privilege = (from Priv in REResponse.EntityMetadata.Privileges where Priv.PrivilegeType == Type select Priv).FirstOrDefault();

            if (Privilege != null)
            {
                AddPrivilegesRoleRequest Request = new AddPrivilegesRoleRequest()
                {
                    RoleId     = this.Id,
                    Privileges = new RolePrivilege[] {
                        new RolePrivilege {
                            BusinessUnitId = this.GetAttributeValue <Guid>("businessunitid"), PrivilegeId = Privilege.PrivilegeId, Depth = Depth
                        }
                    }
                };
                Service.Execute(Request);
            }
        }
예제 #4
0
 public SecurityPrivilegeInfo(SecurityPrivilegeMetadata p)
 {
     this.p = p;
 }
 public SecurityPrivilegeInfo(SecurityPrivilegeMetadata p)
 {
     this.p = p;
 }