From 10dd2dcc4b6f357a82ca9b924c1b8b59870ebd17 Mon Sep 17 00:00:00 2001 From: Renaud Paquay Date: Tue, 27 Jul 2010 15:59:38 -0700 Subject: [PATCH] Update default roles to work with Features The code used to deal with Modules as the basic unit and needed to be updated to work with "Features" instead, since features are the basic units than can be enabled/disabled. --HG-- branch : dev --- src/Orchard.Web/Core/Common/Permissions.cs | 5 ++-- src/Orchard.Web/Core/Contents/Permissions.cs | 7 ++---- .../Core/Navigation/Permissions.cs | 5 ++-- src/Orchard.Web/Core/Settings/Permissions.cs | 5 ++-- .../Modules/Orchard.Blogs/Permissions.cs | 7 ++---- .../Modules/Orchard.Comments/Permissions.cs | 7 ++---- .../Orchard.ContentTypes/Permissions.cs | 5 ++-- .../Modules/Orchard.DevTools/Permissions.cs | 7 ++---- .../Modules/Orchard.Indexing/Permissions.cs | 7 ++---- .../Modules/Orchard.Media/Permissions.cs | 7 ++---- .../Modules/Orchard.Modules/Permissions.cs | 5 ++-- .../Orchard.MultiTenancy/Permissions.cs | 7 ++---- .../Controllers/AdminController.cs | 9 ++++---- .../DataMigrations/RolesDataMigration.cs | 4 ++-- .../Orchard.Roles/DefaultRoleUpdater.cs | 2 +- .../Orchard.Roles/Models/PermissionRecord.cs | 2 +- .../Modules/Orchard.Roles/Permissions.cs | 7 ++---- .../Orchard.Roles/Services/RoleService.cs | 23 +++++++++++-------- .../ViewModels/RoleCreateViewModel.cs | 4 ++-- .../ViewModels/RoleEditViewModel.cs | 2 +- .../Orchard.Roles/Views/Admin/Create.aspx | 6 ++--- .../Orchard.Roles/Views/Admin/Edit.aspx | 6 ++--- .../Modules/Orchard.Tags/Permissions.cs | 7 ++---- .../Modules/Orchard.Themes/Permissions.cs | 7 ++---- .../Modules/Orchard.Users/Permissions.cs | 7 ++---- .../Permissions/IPermissionProvider.cs | 3 ++- src/Orchard/Security/StandardPermissions.cs | 20 +++++++++++++--- 27 files changed, 81 insertions(+), 102 deletions(-) diff --git a/src/Orchard.Web/Core/Common/Permissions.cs b/src/Orchard.Web/Core/Common/Permissions.cs index c5b62e6c1..4a1e292ec 100644 --- a/src/Orchard.Web/Core/Common/Permissions.cs +++ b/src/Orchard.Web/Core/Common/Permissions.cs @@ -1,13 +1,12 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Core.Common { public class Permissions : IPermissionProvider { public static readonly Permission ChangeOwner = new Permission { Name = "ChangeOwner", Description = "Change the owner of content items" }; - public string ModuleName { - get { return "Common"; } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Core/Contents/Permissions.cs b/src/Orchard.Web/Core/Contents/Permissions.cs index f6e3f9773..a4b82e0e3 100644 --- a/src/Orchard.Web/Core/Contents/Permissions.cs +++ b/src/Orchard.Web/Core/Contents/Permissions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Core.Contents { @@ -12,11 +13,7 @@ namespace Orchard.Core.Contents { public static readonly Permission MetaListContent = new Permission { ImpliedBy = new[] { EditContent, PublishContent, DeleteContent } }; - public string ModuleName { - get { - return "Content"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new [] { diff --git a/src/Orchard.Web/Core/Navigation/Permissions.cs b/src/Orchard.Web/Core/Navigation/Permissions.cs index 2d7fbff63..056d0beaf 100644 --- a/src/Orchard.Web/Core/Navigation/Permissions.cs +++ b/src/Orchard.Web/Core/Navigation/Permissions.cs @@ -1,13 +1,12 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Core.Navigation { public class Permissions : IPermissionProvider { public static readonly Permission ManageMainMenu = new Permission { Name = "ManageMainMenu", Description = "Manage main menu" }; - public string ModuleName { - get { return "Navigation"; } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new[] { diff --git a/src/Orchard.Web/Core/Settings/Permissions.cs b/src/Orchard.Web/Core/Settings/Permissions.cs index 91fe4d3ff..b96cf1c3c 100644 --- a/src/Orchard.Web/Core/Settings/Permissions.cs +++ b/src/Orchard.Web/Core/Settings/Permissions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Core.Settings { @@ -6,9 +7,7 @@ namespace Orchard.Core.Settings { public static readonly Permission ManageSettings = new Permission { Name = "ManageSettings", Description = "Manage site settings" }; public static readonly Permission ChangeSuperuser = new Permission { Name = "ChangeSuperuser", Description = "Change the superuser for the site" }; - public string ModuleName { - get { return "Settings"; } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Permissions.cs index cefb98ca4..c55fdb2d9 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Permissions.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Blogs { @@ -16,11 +17,7 @@ namespace Orchard.Blogs { public static readonly Permission MetaListOthersBlogs = new Permission { ImpliedBy = new[] { EditOthersBlogPost, PublishOthersBlogPost, DeleteOthersBlogPost } }; public static readonly Permission MetaListBlogs = new Permission { ImpliedBy = new[] { EditBlogPost, PublishBlogPost, DeleteBlogPost } }; - public string ModuleName { - get { - return "Blogs"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Comments/Permissions.cs index f38226003..3f64c192d 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Permissions.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Comments { @@ -11,11 +12,7 @@ namespace Orchard.Comments { public static readonly Permission ManageComments = new Permission { Description = "Manage comments", Name = "ManageComments" }; public static readonly Permission ManageOthersComments = new Permission { Description = "Manage comments for others", Name = "ManageOthersComments" }; - public string ModuleName { - get { - return "Comments"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Permissions.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/Permissions.cs index 9b0620aed..aa1aeaf26 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Permissions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.ContentTypes { @@ -6,9 +7,7 @@ namespace Orchard.ContentTypes { public static readonly Permission CreateContentTypes = new Permission { Name = "CreateContentTypes", Description = "Create custom content types." }; public static readonly Permission EditContentTypes = new Permission { Name = "EditContentTypes", Description = "Edit content types." }; - public string ModuleName { - get { return "Contents"; } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new [] { diff --git a/src/Orchard.Web/Modules/Orchard.DevTools/Permissions.cs b/src/Orchard.Web/Modules/Orchard.DevTools/Permissions.cs index 47826f3bb..96b7ff8ac 100644 --- a/src/Orchard.Web/Modules/Orchard.DevTools/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.DevTools/Permissions.cs @@ -2,17 +2,14 @@ using System.Collections.Generic; using System.Linq; using System.Web; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.DevTools { public class Permissions : IPermissionProvider { public static readonly Permission DebugShowAllMenuItems = new Permission { Description = "DevTools: Show all menu items", Name = "DebugShowAllMenuItems" }; - public string ModuleName { - get { - return "DevTools"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs index 33f8f86d1..1d3b2c870 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs @@ -1,15 +1,12 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Indexing { public class Permissions : IPermissionProvider { public static readonly Permission ManageSearchIndex = new Permission { Description = "Manage Search Index", Name = "ManageSearchIndex" }; - public string ModuleName { - get { - return "Indexing"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new[] { ManageSearchIndex }; diff --git a/src/Orchard.Web/Modules/Orchard.Media/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Media/Permissions.cs index 8f30785f0..3ddfcbd6f 100644 --- a/src/Orchard.Web/Modules/Orchard.Media/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Media/Permissions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Media { @@ -6,11 +7,7 @@ namespace Orchard.Media { public static readonly Permission ManageMediaFiles = new Permission { Description = "Modifying Media Files", Name = "ManageMediaFiles" }; public static readonly Permission UploadMediaFiles = new Permission { Description = "Uploading Media Files", Name = "UploadMediaFiles", ImpliedBy = new[] { ManageMediaFiles } }; - public string ModuleName { - get { - return "Media"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs index 6a6d2cf42..2e7194bc4 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Modules { @@ -6,9 +7,7 @@ namespace Orchard.Modules { public static readonly Permission ManageModules = new Permission { Description = "Manage Modules", Name = "ManageModules" }; public static readonly Permission ManageFeatures = new Permission { Description = "Manage Features", Name = "ManageFeatures", ImpliedBy = new[] {ManageModules}}; - public string ModuleName { - get { return "Modules"; } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new[] {ManageModules, ManageFeatures}; diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Permissions.cs b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Permissions.cs index 50bd38850..74cbb8fad 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Permissions.cs @@ -1,15 +1,12 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.MultiTenancy { public class Permissions : IPermissionProvider { public static readonly Permission ManageTenants = new Permission { Description = "Modifying Tenants of a Site", Name = "ManageTenants" }; - public string ModuleName { - get { - return "MultiTenancy"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new[] { diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs index 4fe696199..23640c92a 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs @@ -8,7 +8,6 @@ using Orchard.Roles.Models; using Orchard.Roles.Services; using Orchard.Roles.ViewModels; using Orchard.Security; -using Orchard.Security.Permissions; using Orchard.UI.Notify; namespace Orchard.Roles.Controllers { @@ -36,7 +35,7 @@ namespace Orchard.Roles.Controllers { if (!Services.Authorizer.Authorize(Permissions.ManageRoles, T("Not authorized to manage roles"))) return new HttpUnauthorizedResult(); - var model = new RolesIndexViewModel { Rows = _roleService.GetRoles() as IList }; + var model = new RolesIndexViewModel { Rows = _roleService.GetRoles().ToList() }; return View(model); } @@ -65,7 +64,7 @@ namespace Orchard.Roles.Controllers { if (!Services.Authorizer.Authorize(Permissions.ManageRoles, T("Not authorized to manage roles"))) return new HttpUnauthorizedResult(); - var model = new RoleCreateViewModel { ModulePermissions = _roleService.GetInstalledPermissions() }; + var model = new RoleCreateViewModel { FeaturePermissions = _roleService.GetInstalledPermissions() }; return View(model); } @@ -103,11 +102,11 @@ namespace Orchard.Roles.Controllers { throw new HttpException(404, "page with id " + id + " was not found"); } var model = new RoleEditViewModel { Name = role.Name, Id = role.Id, - ModulePermissions = _roleService.GetInstalledPermissions(), + FeaturePermissions = _roleService.GetInstalledPermissions(), CurrentPermissions = _roleService.GetPermissionsForRole(id)}; var simulation = UserSimulation.Create(role.Name); - model.EffectivePermissions = model.ModulePermissions + model.EffectivePermissions = model.FeaturePermissions .SelectMany(group => group.Value) .Where(permission => _authorizationService.TryCheckAccess(permission, simulation, null)) .Select(permission=>permission.Name) diff --git a/src/Orchard.Web/Modules/Orchard.Roles/DataMigrations/RolesDataMigration.cs b/src/Orchard.Web/Modules/Orchard.Roles/DataMigrations/RolesDataMigration.cs index 43909d2bf..1655886e4 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/DataMigrations/RolesDataMigration.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/DataMigrations/RolesDataMigration.cs @@ -4,11 +4,11 @@ namespace Orchard.Roles.DataMigrations { public class RolesDataMigration : DataMigrationImpl { public int Create() { - //CREATE TABLE Orchard_Roles_PermissionRecord (Id integer, Name TEXT, ModuleName TEXT, Description TEXT, primary key (Id)); + //CREATE TABLE Orchard_Roles_PermissionRecord (Id integer, Name TEXT, FeatureName TEXT, Description TEXT, primary key (Id)); SchemaBuilder.CreateTable("PermissionRecord", table => table .Column("Id", column => column.PrimaryKey().Identity()) .Column("Name") - .Column("ModuleName") + .Column("FeatureName") .Column("Description") ); diff --git a/src/Orchard.Web/Modules/Orchard.Roles/DefaultRoleUpdater.cs b/src/Orchard.Web/Modules/Orchard.Roles/DefaultRoleUpdater.cs index f7a4d2b6a..97252cc22 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/DefaultRoleUpdater.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/DefaultRoleUpdater.cs @@ -38,7 +38,7 @@ namespace Orchard.Roles { var featureName = feature.Descriptor.Name; // when another module is being enabled, locate matching permission providers - var providersForEnabledModule = _permissionProviders.Where(x => x.ModuleName == featureName); + var providersForEnabledModule = _permissionProviders.Where(x => x.Feature.Descriptor.Name == featureName); if (providersForEnabledModule.Any()) { Logger.Debug("Configuring default roles for module {0}", featureName); diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Models/PermissionRecord.cs b/src/Orchard.Web/Modules/Orchard.Roles/Models/PermissionRecord.cs index bc587f700..1441f5d0a 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Models/PermissionRecord.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Models/PermissionRecord.cs @@ -2,7 +2,7 @@ public class PermissionRecord { public virtual int Id { get; set; } public virtual string Name { get; set; } - public virtual string ModuleName { get; set; } + public virtual string FeatureName { get; set; } public virtual string Description { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Roles/Permissions.cs index 95f05eb7c..ca349b7ec 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Permissions.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Roles { @@ -9,11 +10,7 @@ namespace Orchard.Roles { public static readonly Permission ManageRoles = new Permission { Description = "Create and manage roles", Name = "ManageRoles" }; public static readonly Permission ApplyRoles = new Permission { Description = "Assign users to roles", Name = "AssignUsersToRoles", ImpliedBy = new[] { ManageRoles } }; - public string ModuleName { - get { - return "Roles"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs b/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs index 714c10a96..e7cc0a63c 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; using Orchard.Data; +using Orchard.Environment.Extensions.Models; using Orchard.Logging; using Orchard.Roles.Models; using Orchard.Security.Permissions; @@ -47,7 +48,7 @@ namespace Orchard.Roles.Services { _permissionRepository.Create(new PermissionRecord { Description = GetPermissionDescription(permissionName), Name = permissionName, - ModuleName = GetModuleName(permissionName) + FeatureName = GetFeatureName(permissionName) }); } RoleRecord roleRecord = GetRoleByName(roleName); @@ -65,7 +66,7 @@ namespace Orchard.Roles.Services { _permissionRepository.Create(new PermissionRecord { Description = GetPermissionDescription(permission), Name = permission, - ModuleName = GetModuleName(permission) + FeatureName = GetFeatureName(permission) }); } PermissionRecord permissionRecord = _permissionRepository.Get(x => x.Name == permission); @@ -73,11 +74,11 @@ namespace Orchard.Roles.Services { } } - private string GetModuleName(string permissionName) { + private string GetFeatureName(string permissionName) { foreach (var permissionProvider in _permissionProviders) { foreach (var permission in permissionProvider.GetPermissions()) { if (String.Equals(permissionName, permission.Name, StringComparison.OrdinalIgnoreCase)) { - return permissionProvider.ModuleName; + return permissionProvider.Feature.Descriptor.Name; } } } @@ -100,20 +101,22 @@ namespace Orchard.Roles.Services { } public IDictionary> GetInstalledPermissions() { - Dictionary> installedPermissions = new Dictionary>(); + var installedPermissions = new Dictionary>(); foreach (var permissionProvider in _permissionProviders) { - IEnumerable permissions = permissionProvider.GetPermissions(); - if (installedPermissions.ContainsKey(permissionProvider.ModuleName)) - installedPermissions[permissionProvider.ModuleName] = installedPermissions[permissionProvider.ModuleName].Concat(permissions); + var featureName = permissionProvider.Feature.Descriptor.Name; + var permissions = permissionProvider.GetPermissions(); + + if (installedPermissions.ContainsKey(featureName)) + installedPermissions[featureName] = installedPermissions[featureName].Concat(permissions); else - installedPermissions.Add(permissionProvider.ModuleName, permissions); + installedPermissions.Add(featureName, permissions); } return installedPermissions; } public IEnumerable GetPermissionsForRole(int id) { - List permissions = new List(); + var permissions = new List(); RoleRecord roleRecord = GetRole(id); foreach (RolesPermissionsRecord rolesPermission in roleRecord.RolesPermissions) { permissions.Add(rolesPermission.Permission.Name); diff --git a/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleCreateViewModel.cs b/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleCreateViewModel.cs index b786b6780..e3201d03e 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleCreateViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleCreateViewModel.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Orchard.Mvc.ViewModels; using Orchard.Security.Permissions; @@ -7,6 +7,6 @@ namespace Orchard.Roles.ViewModels { public class RoleCreateViewModel : BaseViewModel { [Required] public string Name { get; set; } - public IDictionary> ModulePermissions { get; set; } + public IDictionary> FeaturePermissions { get; set; } } } diff --git a/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleEditViewModel.cs b/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleEditViewModel.cs index 3bebc049e..8cd6e07e8 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleEditViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/ViewModels/RoleEditViewModel.cs @@ -8,7 +8,7 @@ namespace Orchard.Roles.ViewModels { public int Id { get; set; } [Required] public string Name { get; set; } - public IDictionary> ModulePermissions { get; set; } + public IDictionary> FeaturePermissions { get; set; } public IEnumerable CurrentPermissions { get; set; } public IEnumerable EffectivePermissions { get; set; } } diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Create.aspx b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Create.aspx index 6200b38fe..eb42b7975 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Create.aspx +++ b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Create.aspx @@ -10,9 +10,9 @@
<%: T("Permissions") %> - <% foreach (var moduleName in Model.ModulePermissions.Keys) { %> + <% foreach (var featureName in Model.FeaturePermissions.Keys) { %>
- <%: T("{0} Module", moduleName) %> + <%: T("{0} Module", featureName) %> @@ -24,7 +24,7 @@ - <% foreach (var permission in Model.ModulePermissions[moduleName]) { %> + <% foreach (var permission in Model.FeaturePermissions[featureName]) { %> diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.aspx b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.aspx index c8004378d..87476e314 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.aspx +++ b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Edit.aspx @@ -11,9 +11,9 @@
<%: T("Permissions") %> - <% foreach (var moduleName in Model.ModulePermissions.Keys) { %> + <% foreach (var featureName in Model.FeaturePermissions.Keys) { %>
- <%: T("{0} Module", moduleName) %> + <%: T("{0} Feature", featureName) %>
<%: T("Allow") %>
<%: permission.Description %> "/>
@@ -26,7 +26,7 @@ - <% foreach (var permission in Model.ModulePermissions[moduleName]) { %> + <% foreach (var permission in Model.FeaturePermissions[featureName]) { %>
<%: T("Effective") %>
<%: permission.Description %> diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Tags/Permissions.cs index 481689369..164c92bd9 100644 --- a/src/Orchard.Web/Modules/Orchard.Tags/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Tags/Permissions.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Tags { @@ -8,11 +9,7 @@ namespace Orchard.Tags { public static readonly Permission CreateTag = new Permission { Description = "Create tag", Name = "CreateTag", ImpliedBy = new[] { ManageTags } }; public static readonly Permission ApplyTag = new Permission { Description = "Applying a Tag", Name = "ApplyTag", ImpliedBy = new[] { ManageTags, CreateTag } }; - public string ModuleName { - get { - return "Tags"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Themes/Permissions.cs index 3ae99df52..4a9f87209 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Themes/Permissions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Themes { @@ -6,11 +7,7 @@ namespace Orchard.Themes { public static readonly Permission ManageThemes = new Permission { Description = "Manage Themes", Name = "ManageThemes" }; public static readonly Permission ApplyTheme = new Permission { Description = "Apply a Theme", Name = "ApplyTheme" }; - public string ModuleName { - get { - return "Themes"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard.Web/Modules/Orchard.Users/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Users/Permissions.cs index 1c69eee28..e3e3695f2 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Permissions.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using JetBrains.Annotations; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Users { @@ -7,11 +8,7 @@ namespace Orchard.Users { public class Permissions : IPermissionProvider { public static readonly Permission ManageUsers = new Permission { Description = "Manage users", Name = "ManageUsers" }; - public string ModuleName { - get { - return "Users"; - } - } + public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { return new Permission[] { diff --git a/src/Orchard/Security/Permissions/IPermissionProvider.cs b/src/Orchard/Security/Permissions/IPermissionProvider.cs index f4f745336..072996ca6 100644 --- a/src/Orchard/Security/Permissions/IPermissionProvider.cs +++ b/src/Orchard/Security/Permissions/IPermissionProvider.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Orchard.Environment.Extensions.Models; namespace Orchard.Security.Permissions { /// @@ -6,7 +7,7 @@ namespace Orchard.Security.Permissions { /// the which may be granted /// public interface IPermissionProvider : IDependency { - string ModuleName { get; } + Feature Feature { get; } IEnumerable GetPermissions(); IEnumerable GetDefaultStereotypes(); } diff --git a/src/Orchard/Security/StandardPermissions.cs b/src/Orchard/Security/StandardPermissions.cs index b73f937a2..976ed5f48 100644 --- a/src/Orchard/Security/StandardPermissions.cs +++ b/src/Orchard/Security/StandardPermissions.cs @@ -1,4 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; +using Orchard.Environment.Extensions.Models; using Orchard.Security.Permissions; namespace Orchard.Security { @@ -6,10 +9,21 @@ namespace Orchard.Security { public static readonly Permission AccessAdminPanel = new Permission { Name = "AccessAdminPanel", Description = "Access admin panel" }; public static readonly Permission AccessFrontEnd = new Permission { Name = "AccessFrontEnd", Description = "Access site front-end" }; - public string ModuleName { + public Feature Feature { get { // This is a lie, but it enables the permissions and stereotypes to be created - return "Common"; + return new Feature { + Descriptor = new FeatureDescriptor { + Name = "Orchard.Framework", + Category = "Core", + Dependencies = Enumerable.Empty(), + Description = "", + Extension = new ExtensionDescriptor { + Name = "Orchard.Framework" + } + }, + ExportedTypes = Enumerable.Empty() + }; } }