mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adding lists permissions
This commit is contained in:
@@ -4,6 +4,7 @@ using Orchard.ContentManagement;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.Core.Containers.Services;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Security;
|
||||
using Orchard.UI.Navigation;
|
||||
using Orchard.Utility.Extensions;
|
||||
|
||||
@@ -11,10 +12,19 @@ namespace Orchard.Lists {
|
||||
public class AdminMenu : INavigationProvider {
|
||||
private readonly IContainerService _containerService;
|
||||
private readonly IContentManager _contentManager;
|
||||
|
||||
public AdminMenu(IContainerService containerService, IContentManager contentManager) {
|
||||
private readonly IAuthorizationService _authorizationService;
|
||||
private readonly IWorkContextAccessor _workContextAccessor;
|
||||
|
||||
public AdminMenu(
|
||||
IContainerService containerService,
|
||||
IContentManager contentManager,
|
||||
IAuthorizationService authorizationService,
|
||||
IWorkContextAccessor workContextAccessor
|
||||
) {
|
||||
_containerService = containerService;
|
||||
_contentManager = contentManager;
|
||||
_authorizationService = authorizationService;
|
||||
_workContextAccessor = workContextAccessor;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
@@ -29,12 +39,17 @@ namespace Orchard.Lists {
|
||||
|
||||
private void CreateListManagementMenuItem(NavigationBuilder builder) {
|
||||
builder.Add(T("Lists"), "11", item => item
|
||||
.Action("Index", "Admin", new {area = "Orchard.Lists"})
|
||||
.Action("Index", "Admin", new {area = "Orchard.Lists"}).Permission(Permissions.ManageLists)
|
||||
);
|
||||
}
|
||||
|
||||
private void CreateListMenuItems(NavigationBuilder builder) {
|
||||
var containers = _containerService.GetContainersQuery(VersionOptions.Latest).Where<ContainerPartRecord>(x => x.ShowOnAdminMenu).List().ToList();
|
||||
var containers = _containerService
|
||||
.GetContainersQuery(VersionOptions.Latest)
|
||||
.Where<ContainerPartRecord>(x => x.ShowOnAdminMenu)
|
||||
.List()
|
||||
.Where(x => _authorizationService.TryCheckAccess(Orchard.Core.Contents.Permissions.EditContent, _workContextAccessor.GetContext().CurrentUser, x))
|
||||
.ToList();
|
||||
|
||||
foreach (var container in containers) {
|
||||
var closureContainer = container;
|
||||
|
@@ -129,7 +129,7 @@ namespace Orchard.Lists.Controllers {
|
||||
break;
|
||||
case ContentsBulkAction.PublishNow:
|
||||
foreach (var item in checkedContentItems) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.PublishContent, item, T("Couldn't publish selected lists."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.PublishContent, item, T("Couldn't publish selected lists."))) {
|
||||
_transactionManager.Cancel();
|
||||
return new HttpUnauthorizedResult();
|
||||
}
|
||||
@@ -139,7 +139,7 @@ namespace Orchard.Lists.Controllers {
|
||||
break;
|
||||
case ContentsBulkAction.Unpublish:
|
||||
foreach (var item in checkedContentItems) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.PublishContent, item, T("Couldn't unpublish selected lists."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.PublishContent, item, T("Couldn't unpublish selected lists."))) {
|
||||
_transactionManager.Cancel();
|
||||
return new HttpUnauthorizedResult();
|
||||
}
|
||||
@@ -149,7 +149,7 @@ namespace Orchard.Lists.Controllers {
|
||||
break;
|
||||
case ContentsBulkAction.Remove:
|
||||
foreach (var item in checkedContentItems) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.DeleteContent, item, T("Couldn't remove selected lists."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.DeleteContent, item, T("Couldn't remove selected lists."))) {
|
||||
_transactionManager.Cancel();
|
||||
return new HttpUnauthorizedResult();
|
||||
}
|
||||
@@ -435,7 +435,7 @@ namespace Orchard.Lists.Controllers {
|
||||
var selectedItems = _contentManager.GetMany<ContainablePart>(selectedIds, VersionOptions.Latest, QueryHints.Empty);
|
||||
|
||||
foreach (var item in selectedItems) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.EditContent, item, T("Couldn't move selected content."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.EditContent, item, T("Couldn't move selected content."))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ namespace Orchard.Lists.Controllers {
|
||||
private bool BulkRemoveFromList(IEnumerable<int> itemIds) {
|
||||
var selectedItems = _contentManager.GetMany<ContainablePart>(itemIds, VersionOptions.Latest, QueryHints.Empty);
|
||||
foreach (var item in selectedItems) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.EditContent, item, T("Couldn't remove selected content from the list."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.EditContent, item, T("Couldn't remove selected content from the list."))) {
|
||||
_services.TransactionManager.Cancel();
|
||||
return false;
|
||||
}
|
||||
@@ -468,7 +468,7 @@ namespace Orchard.Lists.Controllers {
|
||||
|
||||
private bool BulkRemove(IEnumerable<int> itemIds) {
|
||||
foreach (var item in itemIds.Select(itemId => _contentManager.GetLatest(itemId))) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.DeleteContent, item, T("Couldn't remove selected content."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.DeleteContent, item, T("Couldn't remove selected content."))) {
|
||||
_services.TransactionManager.Cancel();
|
||||
return false;
|
||||
}
|
||||
@@ -481,7 +481,7 @@ namespace Orchard.Lists.Controllers {
|
||||
|
||||
private bool BulkUnpublish(IEnumerable<int> itemIds) {
|
||||
foreach (var item in itemIds.Select(itemId => _contentManager.GetLatest(itemId))) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.PublishContent, item, T("Couldn't unpublish selected content."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.PublishContent, item, T("Couldn't unpublish selected content."))) {
|
||||
_services.TransactionManager.Cancel();
|
||||
return false;
|
||||
}
|
||||
@@ -494,7 +494,7 @@ namespace Orchard.Lists.Controllers {
|
||||
|
||||
private bool BulkPublishNow(IEnumerable<int> itemIds) {
|
||||
foreach (var item in itemIds.Select(itemId => _contentManager.GetLatest(itemId))) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.PublishContent, item, T("Couldn't publish selected content."))) {
|
||||
if (!_services.Authorizer.Authorize(Orchard.Core.Contents.Permissions.PublishContent, item, T("Couldn't publish selected content."))) {
|
||||
_services.TransactionManager.Cancel();
|
||||
return false;
|
||||
}
|
||||
|
@@ -66,6 +66,7 @@
|
||||
<Compile Include="AdminMenu.cs" />
|
||||
<Compile Include="Drivers\ContainerPartDriver.cs" />
|
||||
<Compile Include="Drivers\ContainablePartDriver.cs" />
|
||||
<Compile Include="Permissions.cs" />
|
||||
<Compile Include="Projections\ListSortCriteria.cs" />
|
||||
<Compile Include="Services\IFormProvider.cs" />
|
||||
<Compile Include="Forms\ListFilterForm.cs" />
|
||||
|
42
src/Orchard.Web/Modules/Orchard.Lists/Permissions.cs
Normal file
42
src/Orchard.Web/Modules/Orchard.Lists/Permissions.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System.Collections.Generic;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.Security.Permissions;
|
||||
|
||||
namespace Orchard.Lists {
|
||||
public class Permissions : IPermissionProvider {
|
||||
public static readonly Permission ManageLists = new Permission { Description = "Manage lists", Name = "ManageLists" };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
public IEnumerable<Permission> GetPermissions() {
|
||||
return new[] {
|
||||
ManageLists,
|
||||
};
|
||||
}
|
||||
|
||||
public IEnumerable<PermissionStereotype> GetDefaultStereotypes() {
|
||||
return new[] {
|
||||
new PermissionStereotype {
|
||||
Name = "Administrator",
|
||||
Permissions = new[] {ManageLists}
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Editor",
|
||||
Permissions = new[] {ManageLists}
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Moderator",
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Author",
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Contributor",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user