Ejemplo n.º 1
0
        protected virtual bool TryAssertByCrmEntitySecurityProvider(OrganizationServiceContext context, EntityReference regardingId)
        {
            if (regardingId == null)
            {
                return(false);
            }

            // determine the primary ID attribute

            var request = new RetrieveEntityRequest {
                LogicalName = regardingId.LogicalName, EntityFilters = EntityFilters.Entity
            };
            var response           = context.Execute(request) as RetrieveEntityResponse;
            var primaryIdAttribute = response.EntityMetadata.PrimaryIdAttribute;

            var regarding = context.CreateQuery(regardingId.LogicalName).FirstOrDefault(e => e.GetAttributeValue <Guid>(primaryIdAttribute) == regardingId.Id);

            if (regarding == null)
            {
                return(false);
            }

            // assert read access on the regarding entity

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            return(securityProvider.TryAssert(context, regarding, CrmEntityRight.Read));
        }
        public virtual void AttachFile(OrganizationServiceContext context, Entity entity, HttpPostedFile postedFile)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }

            if (postedFile == null)
            {
                throw new ArgumentNullException("postedFile");
            }

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            securityProvider.Assert(context, entity, CrmEntityRight.Change);

            var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: HttpContext.Current.Request.RequestContext, portalName: PortalName);
            var dataAdapter             = new AnnotationDataAdapter(dataAdapterDependencies);
            var result = dataAdapter.CreateAnnotation(entity.ToEntityReference(), string.Empty, string.Empty,
                                                      new HttpPostedFileWrapper(postedFile));

            if (result.Annotation.Entity.Id != null)
            {
                throw new InvalidOperationException("The file couldn't be attached to entity {0}.".FormatWith(entity));
            }
        }
 public PortalContextDataAdapterDependencies(IPortalContext portalContext, string portalName = null, RequestContext requestContext = null) : base(
         portalContext.ServiceContext,
         PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName),
         PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IEntityUrlProvider>(),
         portalContext,
         requestContext)
 {
 }
 public PortalConfigurationDataAdapterDependencies(string portalName = null, RequestContext requestContext = null) : base(
         PortalCrmConfigurationManager.CreateServiceContext(portalName),
         PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName),
         PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IEntityUrlProvider>(),
         PortalCrmConfigurationManager.CreatePortalContext(portalName, requestContext))
 {
     PortalName = portalName;
 }
        public ActionResult Index(string number)
        {
            OrganizationServiceContext serviceContext = PortalCrmConfigurationManager.CreateServiceContext();
            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider();
            var urlProvider      = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IEntityUrlProvider>();

            return(this.GetIndexView(number, serviceContext, securityProvider, urlProvider));
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="portalContext">The <see cref="IPortalContext"/> to get dependencies from.</param>
 /// <param name="portalName">The configured name of the portal to get a security provider dependency from.</param>
 public PortalContextDataAdapterDependencies(IPortalContext portalContext, string portalName = null)
     : base(
         portalContext.ServiceContext,
         PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName),
         HttpContext.Current != null ? new HttpContextWrapper(HttpContext.Current) : null,
         portalContext)
 {
 }
 public WebsiteDataAdapterDependencies(OrganizationServiceContext serviceContext, Entity website, IPortalContext portalContext, string portalName = null) : base(
         serviceContext,
         PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName),
         PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IEntityUrlProvider>(),
         website.ToEntityReference(),
         portalContext.User == null ? null : portalContext.User.ToEntityReference())
 {
     PortalName = portalName;
 }
Ejemplo n.º 8
0
        protected void Page_Init(object sender, EventArgs e)
        {
            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider();

            _sponsors = ServiceContext.CreateQuery("adx_eventsponsor")
                        .Where(es => es.GetAttributeValue <EntityReference>("adx_websiteid") == Website.ToEntityReference())
                        .ToArray()
                        .Where(es => securityProvider.TryAssert(ServiceContext, es, CrmEntityRight.Read))
                        .ToArray();
        }
        public static IEnumerable <Entity> GetPublishedSurveys(this OrganizationServiceContext context, Entity website, string portalName = null)
        {
            website.AssertEntityName("adx_website");

            var surveys = website.GetRelatedEntities(context, "adx_website_survey");

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName);

            return(surveys.Where(s => securityProvider.TryAssert(context, s, CrmEntityRight.Read)));
        }
Ejemplo n.º 10
0
        protected virtual bool HasEditPermission(Entity entity)
        {
            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);
            var portal           = PortalCrmConfigurationManager.CreatePortalContext(PortalName);
            var context          = portal.ServiceContext;

            entity = context.MergeClone(entity);

            return(securityProvider.TryAssert(context, entity, CrmEntityRight.Change));
        }
Ejemplo n.º 11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider();

            Speakers.DataSource = ServiceContext.CreateQuery("adx_eventspeaker").Where(es => es.GetAttributeValue <EntityReference>("adx_websiteid") == Website.ToEntityReference()).ToArray()
                                  .Where(es => securityProvider.TryAssert(ServiceContext, es, CrmEntityRight.Read))
                                  .OrderBy(es => es.GetAttributeValue <string>("adx_name"))
                                  .ToArray();

            Speakers.DataBind();
        }
Ejemplo n.º 12
0
        public IPortalViewEntity GetEntity(OrganizationServiceContext serviceContext, Entity entity)
        {
            if (entity == null)
            {
                return(null);
            }

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);
            var urlProvider      = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <IEntityUrlProvider>();

            return(new PortalViewEntity(serviceContext, entity, securityProvider, urlProvider));
        }
Ejemplo n.º 13
0
        private static IEnumerable <SyndicationItem> GetSyndicationItems(OrganizationServiceContext serviceContext, EntityReference newsRootPage)
        {
            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider();

            return(serviceContext.CreateQuery("adx_webpage")
                   .Where(e => e.GetAttributeValue <EntityReference>("adx_parentpageid") == newsRootPage)
                   .OrderByDescending(e => e.GetAttributeValue <DateTime?>("adx_displaydate"))
                   .Take(20)
                   .ToArray()
                   .Where(e => securityProvider.TryAssert(serviceContext, e, CrmEntityRight.Read))
                   .Select(e => GetSyndicationItem(serviceContext, e)));
        }
        public static IEnumerable <Entity> GetPublishedEvents(this OrganizationServiceContext context, Entity site, string portalName = null)
        {
            site.AssertEntityName("adx_website");

            var findEvents =
                from e in context.CreateQuery("adx_event")
                where e.GetAttributeValue <EntityReference>("adx_websiteid") == site.ToEntityReference()
                select e;

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName);

            return(findEvents.ToList().Where(e => securityProvider.TryAssert(context, e, CrmEntityRight.Read)));
        }
Ejemplo n.º 15
0
        public void AttachFile(OrganizationServiceContext context, Entity entity, HttpPostedFile postedFile)
        {
            context.ThrowOnNull("context");
            entity.ThrowOnNull("entity");
            postedFile.ThrowOnNull("postedFile");

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            securityProvider.Assert(context, entity, CrmEntityRight.Change);

            if (!context.AddNoteAndSave(entity, string.Empty, string.Empty, postedFile))
            {
                throw new InvalidOperationException("Failed to attach file to entity {0}.".FormatWith(entity));
            }
        }
        public SingleWebsiteCmsDataServiceQueryInterceptor(string portalName)
        {
            _securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName);
            var portal  = PortalCrmConfigurationManager.CreatePortalContext(portalName);
            var website = portal.Website;

            if (website == null)
            {
                throw new ArgumentException("The specified portal {0} doesn't have a configured website.".FormatWith(portalName), "portalName");
            }

            website.AssertEntityName("adx_website");

            _website = website.ToEntityReference();
        }
Ejemplo n.º 17
0
        public ActionResult Index(string number)
        {
            var serviceContext = PortalCrmConfigurationManager.CreateServiceContext();

            var kbarticle = serviceContext.CreateQuery("kbarticle")
                            .FirstOrDefault(e => e.GetAttributeValue <string>("number") == number);

            if (kbarticle == null)
            {
                ADXTrace.Instance.TraceWarning(TraceCategory.Application, "User Config issue:Knowledge base article not found exception by Article number");
                return(HttpNotFound(ResourceManager.GetString("Knowledge_Base_Article_Not_Found_Exception").FormatWith(number)));
            }

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider();

            if (!securityProvider.TryAssert(serviceContext, kbarticle, CrmEntityRight.Read))
            {
                ADXTrace.Instance.TraceWarning(TraceCategory.Application, "User Config issue:Knowledge Base Article: No read permission by Article number");
                return(HttpNotFound(ResourceManager.GetString("Knowledge_Base_Article_Not_Found_Exception").FormatWith(number)));
            }

            var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IEntityUrlProvider>();

            var adx_kbarticle_kbarticle = kbarticle.GetRelatedEntities(serviceContext, new Relationship("adx_kbarticle_kbarticle")
            {
                PrimaryEntityRole = EntityRole.Referenced
            });

            var relatedArticles = adx_kbarticle_kbarticle
                                  .Where(e => securityProvider.TryAssert(serviceContext, e, CrmEntityRight.Read))
                                  .Select(e => new
            {
                Title = e.GetAttributeValue <string>("title"),
                Url   = urlProvider.GetUrl(serviceContext, e)
            })
                                  .Where(e => !(string.IsNullOrEmpty(e.Title) || string.IsNullOrEmpty(e.Url)))
                                  .Select(e => new RelatedArticle(e.Title, e.Url))
                                  .OrderBy(e => e.Title);

            //Log Customer Journey Tracking
            if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.CustomerJourneyTracking))
            {
                PortalTrackingTrace.TraceInstance.Log(Constants.Article, kbarticle.Id.ToString(), kbarticle.GetAttributeValue <string>("title"));
            }
            return(View(new ArticleViewModel(kbarticle, relatedArticles)));
        }
        public SingleWebsiteCmsDataServiceQueryInterceptor(string portalName)
        {
            _securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName);
            var portal  = PortalCrmConfigurationManager.CreatePortalContext(portalName);
            var website = portal.Website;

            if (website == null)
            {
                throw new ArgumentException("The specified portal '{0}' does not have a configured website.".FormatWith(portalName), "portalName");
            }

            website.AssertEntityName("adx_website");

            var id = website.GetAttributeValue <Guid?>("adx_websiteid");

            _websiteID = id.HasValue ? id.Value : website.Id;
        }
Ejemplo n.º 19
0
        private bool TryGetWebLinkSetEntity(string webLinkSetName, out Entity webLinkSet)
        {
            webLinkSet = null;

            if (string.IsNullOrEmpty(webLinkSetName))
            {
                return(false);
            }

            var portal  = PortalCrmConfigurationManager.CreatePortalContext(PortalName);
            var context = portal.ServiceContext;

            webLinkSet = context.GetLinkSetByName(portal.Website, WebLinkSetName);

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            return(webLinkSet != null && securityProvider.TryAssert(context, webLinkSet, CrmEntityRight.Read));
        }
Ejemplo n.º 20
0
        protected virtual void ProcessRequest(HttpContext context, ICmsEntityServiceProvider serviceProvider, Guid portalScopeId, IPortalContext portal, OrganizationServiceContext serviceContext, EntityReference entityReference)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }

            if (portal == null)
            {
                throw new ArgumentNullException("portal");
            }

            if (serviceContext == null)
            {
                throw new ArgumentNullException("serviceContext");
            }

            if (entityReference == null)
            {
                throw new ArgumentNullException("entityReference");
            }

            var entityMetadata = new CmsEntityMetadata(serviceContext, entityReference.LogicalName);

            var entity = serviceProvider.ExecuteEntityQuery(context, portal, serviceContext, entityReference, entityMetadata);

            if (entity == null)
            {
                throw new CmsEntityServiceException(HttpStatusCode.NotFound, "Entity not found.");
            }

            var security = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            AssertRequestEntitySecurity(portal, serviceContext, entity, security);

            ProcessRequest(context, serviceProvider, portalScopeId, portal, serviceContext, entity, entityMetadata, security);
        }
Ejemplo n.º 21
0
        public void ProcessRequest(HttpContext context)
        {
            var serviceContext = PortalCrmConfigurationManager.CreateServiceContext(PortalName);
            var security       = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            var eventSchedule = serviceContext.CreateQuery("adx_eventschedule")
                                .FirstOrDefault(e => e.GetAttributeValue <Guid>("adx_eventscheduleid") == _eventScheduleId);

            if (eventSchedule == null || !security.TryAssert(serviceContext, eventSchedule, CrmEntityRight.Read))
            {
                NotFound(context.Response, ResourceManager.GetString("Event_Not_Found"));

                return;
            }

            var @event = eventSchedule.GetRelatedEntity(serviceContext, new Relationship("adx_event_eventschedule"));

            if (@event == null)
            {
                NotFound(context.Response, ResourceManager.GetString("Event_Not_Found"));

                return;
            }

            var vevent = new VEvent
            {
                Uid             = "{0}@{1}".FormatWith(eventSchedule.Id, context.Request.Url.Host),
                Start           = eventSchedule.GetAttributeValue <DateTime?>("adx_starttime"),
                End             = eventSchedule.GetAttributeValue <DateTime?>("adx_endtime"),
                Timestamp       = DateTime.UtcNow,
                Summary         = @event.GetAttributeValue <string>("adx_name"),
                Description     = VCalendar.StripHtml(@event.GetAttributeValue <string>("adx_content")),
                DescriptionHtml = @event.GetAttributeValue <string>("adx_content"),
                Location        = @event.GetAttributeValue <string>("adx_locationname"),
                RecurrenceRule  = GetRecurrenceRule(eventSchedule),
            };

            var vcalendar = new VCalendar(new[] { vevent });

            context.Response.ContentType = "text/calendar";
            context.Response.Write(vcalendar.ToString());
        }
Ejemplo n.º 22
0
        protected override void ProcessRequest(HttpContext context, ICmsEntityServiceProvider serviceProvider, Guid portalScopeId, IPortalContext portal, OrganizationServiceContext serviceContext, EntityReference entityReference)
        {
            var entityMetadata = new CmsEntityMetadata(serviceContext, entityReference.LogicalName);

            var query = serviceContext.CreateQuery(entityReference.LogicalName);

            // If the target entity is scoped to a website, filter the query by the current website.
            if (entityMetadata.HasAttribute("adx_websiteid"))
            {
                query = query.Where(e => e.GetAttributeValue <EntityReference>("adx_websiteid") == portal.Website.ToEntityReference());
            }

            var entity = query.FirstOrDefault(e => e.GetAttributeValue <Guid>(entityMetadata.PrimaryIdAttribute) == entityReference.Id);

            if (entity == null)
            {
                throw new CmsEntityServiceException(HttpStatusCode.NotFound, "Entity not found.");
            }

            var security = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            if (!security.TryAssert(serviceContext, entity, CrmEntityRight.Read))
            {
                throw new CmsEntityServiceException(HttpStatusCode.Forbidden, "Entity access denied.");
            }

            var url = serviceContext.GetUrl(entity);

            if (url == null)
            {
                throw new CmsEntityServiceException(HttpStatusCode.NotFound, "URL for entity not found.");
            }

            WriteResponse(context.Response, new JObject
            {
                { "d", new JObject {
                      { "Url", new JValue(url) }
                  } }
            });
        }
Ejemplo n.º 23
0
        public ActionResult Index(string number)
        {
            var serviceContext = PortalCrmConfigurationManager.CreateServiceContext();

            var kbarticle = serviceContext.CreateQuery("kbarticle")
                            .FirstOrDefault(e => e.GetAttributeValue <string>("number") == number);

            if (kbarticle == null)
            {
                return(HttpNotFound(@"Knowledge base article ""{0}"" not found.".FormatWith(number)));
            }

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider();

            if (!securityProvider.TryAssert(serviceContext, kbarticle, CrmEntityRight.Read))
            {
                return(HttpNotFound(@"Knowledge base article ""{0}"" not found.".FormatWith(number)));
            }

            var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IEntityUrlProvider>();

            var adx_kbarticle_kbarticle = kbarticle.GetRelatedEntities(serviceContext, new Relationship("adx_kbarticle_kbarticle")
            {
                PrimaryEntityRole = EntityRole.Referenced
            });

            var relatedArticles = adx_kbarticle_kbarticle
                                  .Where(e => securityProvider.TryAssert(serviceContext, e, CrmEntityRight.Read))
                                  .Select(e => new
            {
                Title = e.GetAttributeValue <string>("title"),
                Url   = urlProvider.GetUrl(serviceContext, e)
            })
                                  .Where(e => !(string.IsNullOrEmpty(e.Title) || string.IsNullOrEmpty(e.Url)))
                                  .Select(e => new RelatedArticle(e.Title, e.Url))
                                  .OrderBy(e => e.Title);

            return(View(new ArticleViewModel(kbarticle, relatedArticles)));
        }
            private Func <OrganizationServiceContext, Entity, bool> GetSecurityAssertion(string portalName)
            {
                var cmsSecurityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName);

                if (!AdxstudioCrmConfigurationManager.GetCrmSection().ContentMap.Enabled)
                {
                    return((serviceContext, entity) => cmsSecurityProvider.TryAssert(serviceContext, entity, CrmEntityRight.Read));
                }

                var entityPermissionProvider = new CrmEntityPermissionProvider(portalName);

                return((serviceContext, entity) =>
                {
                    if (cmsSecurityProvider.TryAssert(serviceContext, entity, CrmEntityRight.Read))
                    {
                        return true;
                    }

                    var permissionResult = entityPermissionProvider.TryAssert(serviceContext, entity);

                    return permissionResult.RulesExist && permissionResult.CanRead;
                });
            }
        protected virtual bool TryAssertCrmEntityRight(OrganizationServiceContext context, Entity entity, CrmEntityRight right)
        {
            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            return(securityProvider.TryAssert(context, entity, right));
        }
Ejemplo n.º 26
0
 public ICrmEntitySecurityProvider CreateCrmEntitySecurityProvider()
 {
     return(PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName));
 }
Ejemplo n.º 27
0
        private static bool Authorized(OrganizationServiceContext context, Entity entity)
        {
            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider();

            return(securityProvider.TryAssert(context, entity, CrmEntityRight.Read));
        }
Ejemplo n.º 28
0
 public MultipleWebsiteCmsDataServiceQueryInterceptor(string portalName)
 {
     _securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName);
 }
Ejemplo n.º 29
0
        protected override void PerformDataBindingOfCrmEntity(Entity entity)
        {
            var portal  = PortalCrmConfigurationManager.CreatePortalContext(PortalName);
            var context = portal.ServiceContext;

            entity = context.MergeClone(entity);

            if (ShowTitle)
            {
                Controls.Add(new Property
                {
                    PropertyName = GetPropertyName(context, entity, "adx_title"),
                    CssClass     = "weblinkset-title",
                    EditType     = "text",
                    DataItem     = entity
                });
            }

            if (ShowCopy)
            {
                Controls.Add(new Property
                {
                    PropertyName = GetPropertyName(context, entity, "adx_copy"),
                    CssClass     = "weblinkset-copy",
                    EditType     = "html",
                    DataItem     = entity
                });
            }

            var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName);

            var weblinks = entity.GetRelatedEntities(context, "adx_weblinkset_weblink")
                           .Where(e => securityProvider.TryAssert(context, e, CrmEntityRight.Read))
                           .OrderBy(weblink => weblink.GetAttributeValue <int?>("adx_displayorder"))
                           .ToList();

            var weblinkCount = weblinks.Count();

            var listItems = weblinks.Select((weblink, index) =>
            {
                var li = new HtmlGenericControl("li");

                SetPositionalClassAttribute(li, weblinkCount, index);

                if (ItemTemplate != null)
                {
                    var item = CreateItem(this, index, ListItemType.Item, true, weblink);

                    Controls.Remove(item);
                    li.Controls.Add(item);
                }
                else
                {
                    li.Controls.Add(GetHyperLinkForWebLink(weblink));

                    if (ShowLinkDescriptions)
                    {
                        var description = new HtmlGenericControl("div");

                        description.Controls.Add(new Property
                        {
                            PropertyName = GetPropertyName(context, weblink, "adx_description"),
                            DataItem     = weblink,
                            Literal      = true
                        });

                        if (!string.IsNullOrEmpty(DescriptionCssClass))
                        {
                            description.Attributes["class"] = DescriptionCssClass;
                        }

                        li.Controls.Add(description);
                    }
                }

                return(li);
            });

            var container           = new HtmlGenericControl("div");
            var containerCssClasses = new List <string> {
                "weblinkset-weblinks"
            };

            Controls.Add(container);

            if (listItems.Any())
            {
                var list = new HtmlGenericControl("ul");

                foreach (var li in listItems)
                {
                    list.Controls.Add(li);
                }

                container.Controls.Add(list);
            }

            if (Editable)
            {
                containerCssClasses.Add("xrm-entity");
                containerCssClasses.Add("xrm-editable-{0}".FormatWith(entity.LogicalName));

                if (HasEditPermission(entity))
                {
                    var metadataProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityEditingMetadataProvider>();

                    metadataProvider.AddEntityMetadata(PortalName, this, container, entity);

                    this.RegisterClientSideDependencies();
                }
            }

            container.Attributes["class"] = string.Join(" ", containerCssClasses.ToArray());
        }
 private bool ValidateCmsSecurityProvider(OrganizationServiceContext serviceContext, CrmEntitySearchResult result)
 {
     return(PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName)
            .TryAssert(serviceContext, result.Entity, CrmEntityRight.Read));
 }