From df803b2301ff655530f6a7143782636308d12c50 Mon Sep 17 00:00:00 2001 From: Piotr Szmyd Date: Fri, 28 Mar 2014 16:34:13 +0100 Subject: [PATCH] #20534: Fixing custom form permissions. Work Item: 20534 --- .../Orchard.CustomForms/Permissions.cs | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Permissions.cs b/src/Orchard.Web/Modules/Orchard.CustomForms/Permissions.cs index 4beb03f16..4f8fd847c 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Permissions.cs @@ -5,6 +5,7 @@ using Orchard.ContentManagement; using Orchard.ContentManagement.MetaData; using Orchard.ContentManagement.MetaData.Models; using Orchard.CustomForms.Models; +using Orchard.Data; using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; @@ -15,19 +16,27 @@ namespace Orchard.CustomForms { public static readonly Permission ManageForms = new Permission { Description = "Manage custom forms", Name = "ManageForms" }; private readonly IContentDefinitionManager _contentDefinitionManager; - + private readonly IRepository _customFormPartRepository; + public virtual Feature Feature { get; set; } - public Permissions(IContentDefinitionManager contentDefinitionManager) { + public Permissions(IContentDefinitionManager contentDefinitionManager, IRepository customFormPartRepository) { _contentDefinitionManager = contentDefinitionManager; + _customFormPartRepository = customFormPartRepository; } public IEnumerable GetPermissions() { - var formTypeDefinitions = _contentDefinitionManager - .ListTypeDefinitions() - .Where(x => x.Parts.Any(xx => xx.PartDefinition.Name == typeof(CustomFormPart).Name)); + var formContentTypes = _customFormPartRepository.Table + .Select(r => r.ContentType) + .Distinct() + .ToList(); - foreach (var typeDefinition in formTypeDefinitions) { + foreach (var contentType in formContentTypes) { + var typeDefinition = _contentDefinitionManager.GetTypeDefinition(contentType); + if (typeDefinition == null) + { + continue; + } yield return CreateSubmitPermission(typeDefinition); }