mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
committed by
Sebastien Ros
parent
85f6871d44
commit
593f99b758
@@ -57,11 +57,7 @@ namespace Orchard.Core.Contents.Controllers {
|
||||
if (contentItem == null)
|
||||
return HttpNotFound();
|
||||
|
||||
if (!Services.Authorizer.Authorize(Permissions.ViewContent, contentItem, T("Cannot preview content"))) {
|
||||
return new HttpUnauthorizedResult();
|
||||
}
|
||||
|
||||
if (!Services.Authorizer.Authorize(Permissions.EditContent, contentItem, T("Cannot preview content"))) {
|
||||
if (!Services.Authorizer.Authorize(Permissions.PreviewContent, contentItem, T("Cannot preview content"))) {
|
||||
return new HttpUnauthorizedResult();
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ namespace Orchard.Core.Contents {
|
||||
private static readonly Permission DeleteOwnContent = new Permission { Description = "Delete {0}", Name = "DeleteOwn_{0}", ImpliedBy = new[] { DeleteContent, Permissions.DeleteOwnContent } };
|
||||
private static readonly Permission ViewContent = new Permission { Description = "View {0} by others", Name = "View_{0}", ImpliedBy = new[] { EditContent, Permissions.ViewContent } };
|
||||
private static readonly Permission ViewOwnContent = new Permission { Description = "View own {0}", Name = "ViewOwn_{0}", ImpliedBy = new[] { ViewContent, Permissions.ViewOwnContent } };
|
||||
private static readonly Permission PreviewContent = new Permission { Description = "Preview {0} by others", Name = "Preview_{0}", ImpliedBy = new[] { EditContent, Permissions.PreviewContent } };
|
||||
private static readonly Permission PreviewOwnContent = new Permission { Description = "Preview own {0}", Name = "PreviewOwn_{0}", ImpliedBy = new[] { PreviewContent, Permissions.PreviewOwnContent } };
|
||||
|
||||
public static readonly Dictionary<string, Permission> PermissionTemplates = new Dictionary<string, Permission> {
|
||||
{Permissions.PublishContent.Name, PublishContent},
|
||||
@@ -26,7 +28,9 @@ namespace Orchard.Core.Contents {
|
||||
{Permissions.DeleteContent.Name, DeleteContent},
|
||||
{Permissions.DeleteOwnContent.Name, DeleteOwnContent},
|
||||
{Permissions.ViewContent.Name, ViewContent},
|
||||
{Permissions.ViewOwnContent.Name, ViewOwnContent}
|
||||
{Permissions.ViewOwnContent.Name, ViewOwnContent},
|
||||
{Permissions.PreviewContent.Name, PreviewContent},
|
||||
{Permissions.PreviewOwnContent.Name, PreviewOwnContent}
|
||||
};
|
||||
|
||||
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||
|
||||
@@ -16,6 +16,8 @@ namespace Orchard.Core.Contents {
|
||||
public static readonly Permission DeleteOwnContent = new Permission { Description = "Delete own content", Name = "DeleteOwnContent", ImpliedBy = new[] { DeleteContent } };
|
||||
public static readonly Permission ViewContent = new Permission { Description = "View all content", Name = "ViewContent", ImpliedBy = new[] { EditContent } };
|
||||
public static readonly Permission ViewOwnContent = new Permission { Description = "View own content", Name = "ViewOwnContent", ImpliedBy = new[] { ViewContent } };
|
||||
public static readonly Permission PreviewContent = new Permission { Description = "Preview content", Name = "PreviewContent", ImpliedBy = new[] { EditContent, PublishContent } };
|
||||
public static readonly Permission PreviewOwnContent = new Permission { Description = "Preview own content", Name = "PreviewOwnContent", ImpliedBy = new[] { PreviewContent } };
|
||||
|
||||
|
||||
public static readonly Permission MetaListContent = new Permission { ImpliedBy = new[] { EditOwnContent, PublishOwnContent, DeleteOwnContent } };
|
||||
@@ -31,7 +33,9 @@ namespace Orchard.Core.Contents {
|
||||
DeleteOwnContent,
|
||||
DeleteContent,
|
||||
ViewContent,
|
||||
ViewOwnContent
|
||||
ViewOwnContent,
|
||||
PreviewOwnContent,
|
||||
PreviewContent
|
||||
};
|
||||
}
|
||||
|
||||
@@ -39,22 +43,22 @@ namespace Orchard.Core.Contents {
|
||||
return new[] {
|
||||
new PermissionStereotype {
|
||||
Name = "Administrator",
|
||||
Permissions = new[] {PublishContent,EditContent,DeleteContent}
|
||||
Permissions = new[] {PublishContent,EditContent,DeleteContent,PreviewContent}
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Editor",
|
||||
Permissions = new[] {PublishContent,EditContent,DeleteContent}
|
||||
Permissions = new[] {PublishContent,EditContent,DeleteContent,PreviewContent}
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Moderator",
|
||||
Name = "Moderator"
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Author",
|
||||
Permissions = new[] {PublishOwnContent,EditOwnContent,DeleteOwnContent}
|
||||
Permissions = new[] {PublishOwnContent,EditOwnContent,DeleteOwnContent,PreviewOwnContent}
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Contributor",
|
||||
Permissions = new[] {EditOwnContent}
|
||||
Permissions = new[] {EditOwnContent,PreviewOwnContent}
|
||||
},
|
||||
new PermissionStereotype {
|
||||
Name = "Authenticated",
|
||||
|
||||
@@ -60,6 +60,9 @@ namespace Orchard.Core.Contents.Security {
|
||||
return Permissions.DeleteOwnContent;
|
||||
if (permission.Name == Permissions.ViewContent.Name)
|
||||
return Permissions.ViewOwnContent;
|
||||
if (permission.Name == Permissions.PreviewContent.Name)
|
||||
return Permissions.PreviewOwnContent;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,10 +12,12 @@
|
||||
|
||||
if (contentPart.HasDraft()) {
|
||||
if (Authorizer.Authorize(Permissions.PublishContent, contentPart)) {
|
||||
@Html.Link(T("Publish Draft").Text, Url.Action("Publish", "Admin", new { area = "Contents", id = contentPart.ContentItem.Id, returnUrl = Request.ToUrlString() }), new { itemprop = "UnsafeUrl" })
|
||||
@Html.Link(T("Publish Draft").Text, Url.Action("Publish", "Admin", new {area = "Contents", id = contentPart.ContentItem.Id, returnUrl = Request.ToUrlString()}), new {itemprop = "UnsafeUrl"})
|
||||
@T(" | ")
|
||||
|
||||
@Html.ActionLink(T("Preview").Text, "Display", "Item", new {area = "Contents", id = ((ContentItem) Model.ContentPart.ContentItem).Id, version = ((ContentItem)Model.ContentPart.ContentItem).Version }, new {})
|
||||
}
|
||||
|
||||
if (Authorizer.Authorize(Permissions.PreviewContent, contentPart)) {
|
||||
@Html.ActionLink(T("Preview").Text, "Display", "Item", new { area = "Contents", id = ((ContentItem)Model.ContentPart.ContentItem).Id, version = ((ContentItem)Model.ContentPart.ContentItem).Version }, new { })
|
||||
@T(" | ")
|
||||
}
|
||||
}
|
||||
@@ -25,9 +27,11 @@
|
||||
@T(" | ")
|
||||
}
|
||||
} else {
|
||||
if ( contentPart.HasDraft() ) {
|
||||
@Html.ActionLink(T("Preview").Text, "Display", "Item", new { area = "Contents", id = ((ContentItem)Model.ContentPart.ContentItem).Id, version = ((ContentItem)Model.ContentPart.ContentItem).Version }, new { })
|
||||
@T(" | ")
|
||||
if (contentPart.HasDraft()) {
|
||||
if (Authorizer.Authorize(Permissions.PreviewContent, contentPart)) {
|
||||
@Html.ActionLink(T("Preview").Text, "Display", "Item", new { area = "Contents", id = ((ContentItem)Model.ContentPart.ContentItem).Id, version = ((ContentItem)Model.ContentPart.ContentItem).Version }, new { })
|
||||
@T(" | ")
|
||||
}
|
||||
}
|
||||
|
||||
if (Authorizer.Authorize(Permissions.PublishContent, contentPart)) {
|
||||
|
||||
@@ -60,6 +60,8 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
EditOwn = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.EditOwnContent, UserSimulation.Create(x), null) }).ToList()),
|
||||
Delete = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteContent, UserSimulation.Create(x), null) }).ToList()),
|
||||
DeleteOwn = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteOwnContent, UserSimulation.Create(x), null) }).ToList()),
|
||||
Preview = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewContent, UserSimulation.Create(x), null) }).ToList()),
|
||||
PreviewOwn = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewOwnContent, UserSimulation.Create(x), null) }).ToList()),
|
||||
DisplayedRoles = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = true }).ToList()),
|
||||
};
|
||||
}
|
||||
@@ -77,6 +79,8 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
EditOwnRoles= ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.EditOwn),
|
||||
DeleteRoles= ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.Delete),
|
||||
DeleteOwnRoles= ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.DeleteOwn),
|
||||
PreviewRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.Preview),
|
||||
PreviewOwnRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.PreviewOwn),
|
||||
AllRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.DisplayedRoles)
|
||||
};
|
||||
}
|
||||
@@ -90,6 +94,8 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
EditOwnRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, part.EditOwnContent),
|
||||
DeleteRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, part.DeleteContent),
|
||||
DeleteOwnRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, part.DeleteOwnContent),
|
||||
PreviewRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, part.PreviewContent),
|
||||
PreviewOwnRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, part.PreviewOwnContent),
|
||||
AllRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.DisplayedRoles)
|
||||
};
|
||||
}
|
||||
@@ -103,6 +109,8 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
model.EditOwnRoles = model.EditOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.EditOwnContent, part.ContentItem), Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.EditOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.DeleteRoles = model.DeleteRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.DeleteContent, part.ContentItem), Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.DeleteOwnRoles = model.DeleteOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.DeleteOwnContent, part.ContentItem), Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.PreviewRoles = model.PreviewRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.PreviewContent, part.ContentItem), Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.PreviewOwnRoles = model.PreviewOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.PreviewOwnContent, part.ContentItem), Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
|
||||
model.Enabled = part.Enabled;
|
||||
|
||||
@@ -129,6 +137,8 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
part.EditOwnContent = ContentPermissionsPartViewModel.SerializePermissions(model.EditOwnRoles);
|
||||
part.DeleteContent = ContentPermissionsPartViewModel.SerializePermissions(model.DeleteRoles);
|
||||
part.DeleteOwnContent = ContentPermissionsPartViewModel.SerializePermissions(model.DeleteOwnRoles);
|
||||
part.PreviewContent = ContentPermissionsPartViewModel.SerializePermissions(model.PreviewRoles);
|
||||
part.PreviewOwnContent = ContentPermissionsPartViewModel.SerializePermissions(model.PreviewOwnRoles);
|
||||
|
||||
var settings = part.Settings.TryGetModel<ContentPermissionsPartSettings>();
|
||||
|
||||
@@ -144,10 +154,12 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("EditContent", part.EditContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("PublishContent", part.PublishContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("DeleteContent", part.DeleteContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("PreviewContent", part.PreviewContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("ViewOwnContent", part.ViewOwnContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("EditOwnContent", part.EditOwnContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("PublishOwnContent", part.PublishOwnContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("DeleteOwnContent", part.DeleteOwnContent);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("PreviewOwnContent", part.PreviewOwnContent);
|
||||
}
|
||||
|
||||
protected override void Importing(ContentPermissionsPart part, ImportContentContext context) {
|
||||
@@ -156,10 +168,12 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
context.ImportAttribute(part.PartDefinition.Name, "EditContent", s => part.EditContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "PublishContent", s => part.PublishContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "DeleteContent", s => part.DeleteContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "PreviewContent", s => part.PreviewContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "ViewOwnContent", s => part.ViewOwnContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "EditOwnContent", s => part.EditOwnContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "PublishOwnContent", s => part.PublishOwnContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "DeleteOwnContent", s => part.DeleteOwnContent = s);
|
||||
context.ImportAttribute(part.PartDefinition.Name, "PreviewOwnContent", s => part.PreviewOwnContent = s);
|
||||
}
|
||||
|
||||
private void OverrideDefaultPermissions(ContentPermissionsPart part, List<string> allRoles, ContentPermissionsPartSettings settings) {
|
||||
@@ -195,6 +209,14 @@ namespace Orchard.ContentPermissions.Drivers {
|
||||
if (!_authorizer.Authorize(Core.Contents.Permissions.DeleteOwnContent, part.ContentItem)) {
|
||||
part.DeleteOwnContent = settings == null ? ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry {Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteOwnContent, UserSimulation.Create(x), null)})) : settings.DeleteOwn;
|
||||
}
|
||||
|
||||
if (!_authorizer.Authorize(Core.Contents.Permissions.PreviewContent, part.ContentItem)) {
|
||||
part.PreviewContent = settings == null ? ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry {Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewContent, UserSimulation.Create(x), null)})) : settings.Preview;
|
||||
}
|
||||
|
||||
if (!_authorizer.Authorize(Core.Contents.Permissions.PreviewOwnContent, part.ContentItem)) {
|
||||
part.PreviewOwnContent = settings == null ? ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry {Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewOwnContent, UserSimulation.Create(x), null)})) : settings.PreviewOwn;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,5 +49,15 @@ namespace Orchard.ContentPermissions.Models {
|
||||
get { return this.Retrieve(x => x.DeleteOwnContent); }
|
||||
set { this.Store(x => x.DeleteOwnContent, value); }
|
||||
}
|
||||
|
||||
public string PreviewContent {
|
||||
get { return this.Retrieve(x => x.PreviewContent); }
|
||||
set { this.Store(x => x.PreviewContent, value); }
|
||||
}
|
||||
|
||||
public string PreviewOwnContent {
|
||||
get { return this.Retrieve(x => x.PreviewOwnContent); }
|
||||
set { this.Store(x => x.PreviewOwnContent, value); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,6 +70,10 @@ namespace Orchard.ContentPermissions.Security {
|
||||
{
|
||||
authorizedRoles = (hasOwnership ? part.DeleteOwnContent : part.DeleteContent).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
}
|
||||
else if (grantingPermissions.Any(grantingPermission => String.Equals(Core.Contents.Permissions.PreviewContent.Name, grantingPermission, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
authorizedRoles = (hasOwnership ? part.PreviewOwnContent : part.PreviewContent).Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
|
||||
@@ -71,6 +71,9 @@ namespace Orchard.ContentPermissions.Security {
|
||||
return Orchard.Core.Contents.Permissions.DeleteOwnContent;
|
||||
if (permission.Name == Orchard.Core.Contents.Permissions.ViewContent.Name)
|
||||
return Orchard.Core.Contents.Permissions.ViewOwnContent;
|
||||
if (permission.Name == Orchard.Core.Contents.Permissions.PreviewContent.Name)
|
||||
return Orchard.Core.Contents.Permissions.PreviewOwnContent;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ namespace Orchard.ContentPermissions.Services {
|
||||
private static readonly Permission DeleteOwnContent = new Permission { Description = "Delete {0}", Name = "DeleteOwn_{0}", ImpliedBy = new[] { DeleteContent, Orchard.Core.Contents.Permissions.DeleteOwnContent } };
|
||||
private static readonly Permission ViewContent = new Permission { Description = "View {0} by others", Name = "View_{0}", ImpliedBy = new[] { EditContent, Orchard.Core.Contents.Permissions.ViewContent } };
|
||||
private static readonly Permission ViewOwnContent = new Permission { Description = "View own {0}", Name = "ViewOwn_{0}", ImpliedBy = new[] { ViewContent, Orchard.Core.Contents.Permissions.ViewOwnContent } };
|
||||
private static readonly Permission PreviewContent = new Permission { Description = "Preview {0} by others", Name = "Preview_{0}", ImpliedBy = new[] { EditContent, Orchard.Core.Contents.Permissions.PreviewContent } };
|
||||
private static readonly Permission PreviewOwnContent = new Permission { Description = "Preview own {0}", Name = "PreviewOwn_{0}", ImpliedBy = new[] { PreviewContent, Orchard.Core.Contents.Permissions.PreviewOwnContent } };
|
||||
|
||||
|
||||
public static readonly Dictionary<string, Permission> PermissionTemplates = new Dictionary<string, Permission> {
|
||||
{Orchard.Core.Contents.Permissions.PublishContent.Name, PublishContent},
|
||||
@@ -27,7 +30,9 @@ namespace Orchard.ContentPermissions.Services {
|
||||
{Orchard.Core.Contents.Permissions.DeleteContent.Name, DeleteContent},
|
||||
{Orchard.Core.Contents.Permissions.DeleteOwnContent.Name, DeleteOwnContent},
|
||||
{Orchard.Core.Contents.Permissions.ViewContent.Name, ViewContent},
|
||||
{Orchard.Core.Contents.Permissions.ViewOwnContent.Name, ViewOwnContent}
|
||||
{Orchard.Core.Contents.Permissions.ViewOwnContent.Name, ViewOwnContent},
|
||||
{Orchard.Core.Contents.Permissions.PreviewContent.Name, PreviewContent},
|
||||
{Orchard.Core.Contents.Permissions.PreviewOwnContent.Name, PreviewOwnContent}
|
||||
};
|
||||
|
||||
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||
|
||||
@@ -20,6 +20,8 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
public string EditOwn { get; set; }
|
||||
public string Delete { get; set; }
|
||||
public string DeleteOwn { get; set; }
|
||||
public string Preview { get; set; }
|
||||
public string PreviewOwn { get; set; }
|
||||
|
||||
public string DisplayedRoles { get; set; }
|
||||
}
|
||||
@@ -63,6 +65,8 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
EditOwn = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.EditOwnContent, UserSimulation.Create(x), null) })),
|
||||
Delete = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteContent, UserSimulation.Create(x), null) })),
|
||||
DeleteOwn = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteOwnContent, UserSimulation.Create(x), null) })),
|
||||
Preview = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewContent, UserSimulation.Create(x), null) })),
|
||||
PreviewOwn = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role =x, Checked = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewOwnContent, UserSimulation.Create(x), null) })),
|
||||
DisplayedRoles = ContentPermissionsPartViewModel.SerializePermissions(allRoles.Select(x => new RoleEntry { Role = x, Checked = true })),
|
||||
};
|
||||
}
|
||||
@@ -76,6 +80,8 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
EditOwnRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.EditOwn),
|
||||
DeleteRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.Delete),
|
||||
DeleteOwnRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.DeleteOwn),
|
||||
PreviewRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.Preview),
|
||||
PreviewOwnRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.PreviewOwn),
|
||||
AllRoles = ContentPermissionsPartViewModel.ExtractRoleEntries(allRoles, settings.DisplayedRoles)
|
||||
};
|
||||
|
||||
@@ -88,6 +94,8 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
model.EditOwnRoles = model.EditOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.EditOwnContent) }).ToList();
|
||||
model.DeleteRoles = model.DeleteRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.DeleteContent) }).ToList();
|
||||
model.DeleteOwnRoles = model.DeleteOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.DeleteOwnContent) }).ToList();
|
||||
model.PreviewRoles = model.PreviewRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.PreviewContent) }).ToList();
|
||||
model.PreviewOwnRoles = model.PreviewOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.PreviewOwnContent) }).ToList();
|
||||
|
||||
// initialize default value
|
||||
model.ViewRoles = model.ViewRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.ViewContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
@@ -98,6 +106,8 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
model.EditOwnRoles = model.EditOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.EditOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.DeleteRoles = model.DeleteRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.DeleteOwnRoles = model.DeleteOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.PreviewRoles = model.PreviewRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.PreviewOwnRoles = model.PreviewOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
|
||||
yield return DefinitionTemplate(model);
|
||||
}
|
||||
@@ -149,6 +159,14 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
builder.WithSetting("ContentPermissionsPartSettings.DeleteOwn", ContentPermissionsPartViewModel.SerializePermissions(model.DeleteOwnRoles));
|
||||
}
|
||||
|
||||
if (_authorizer.Authorize(Core.Contents.Permissions.PreviewContent)) {
|
||||
builder.WithSetting("ContentPermissionsPartSettings.Preview", ContentPermissionsPartViewModel.SerializePermissions(model.PreviewRoles));
|
||||
}
|
||||
|
||||
if (_authorizer.Authorize(Core.Contents.Permissions.PreviewOwnContent)) {
|
||||
builder.WithSetting("ContentPermissionsPartSettings.PreviewOwn", ContentPermissionsPartViewModel.SerializePermissions(model.PreviewOwnRoles));
|
||||
}
|
||||
|
||||
builder.WithSetting("ContentPermissionsPartSettings.DisplayedRoles", ContentPermissionsPartViewModel.SerializePermissions(model.AllRoles));
|
||||
|
||||
// disable permissions the current user doesn't have
|
||||
@@ -160,6 +178,8 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
model.EditOwnRoles = model.EditOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.EditOwnContent) }).ToList();
|
||||
model.DeleteRoles = model.DeleteRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.DeleteContent) }).ToList();
|
||||
model.DeleteOwnRoles = model.DeleteOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.DeleteOwnContent) }).ToList();
|
||||
model.PreviewRoles = model.PreviewRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.PreviewContent) }).ToList();
|
||||
model.PreviewOwnRoles = model.PreviewOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = _authorizer.Authorize(Core.Contents.Permissions.PreviewOwnContent) }).ToList();
|
||||
|
||||
// initialize default value
|
||||
model.ViewRoles = model.ViewRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.ViewContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
@@ -170,6 +190,8 @@ namespace Orchard.ContentPermissions.Settings {
|
||||
model.EditOwnRoles = model.EditOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.EditOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.DeleteRoles = model.DeleteRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.DeleteOwnRoles = model.DeleteOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.DeleteOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.PreviewRoles = model.PreviewRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
model.PreviewOwnRoles = model.PreviewOwnRoles.Select(x => new RoleEntry { Role = x.Role, Checked = x.Checked, Enabled = x.Enabled, Default = _authorizationService.TryCheckAccess(Core.Contents.Permissions.PreviewOwnContent, UserSimulation.Create(x.Role), null) }).ToList();
|
||||
|
||||
yield return DefinitionTemplate(model);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ namespace Orchard.ContentPermissions.ViewModels {
|
||||
public IList<RoleEntry> EditOwnRoles { get; set; }
|
||||
public IList<RoleEntry> DeleteRoles { get; set; }
|
||||
public IList<RoleEntry> DeleteOwnRoles { get; set; }
|
||||
public IList<RoleEntry> PreviewRoles { get; set; }
|
||||
public IList<RoleEntry> PreviewOwnRoles { get; set; }
|
||||
|
||||
public static IList<RoleEntry> ExtractRoleEntries(IEnumerable<string> allRoles, string allowed) {
|
||||
if(String.IsNullOrWhiteSpace(allowed)) {
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<th><h3>@T("Edit any content")</h3></th>
|
||||
<th><h3>@T("Publish any content")</h3></th>
|
||||
<th><h3>@T("Delete any content")</h3></th>
|
||||
<th><h3>@T("Preview any content")</h3></th>
|
||||
</tr>
|
||||
|
||||
@foreach (var r in Model.AllRoles.Select((x, i) => new { Index = i, Name = x.Role })) {
|
||||
@@ -49,6 +50,13 @@
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.DeleteRoles[role.Index].Role)
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<input type="checkbox" disabled="disabled" @if (Model.PreviewRoles.Any(x => x.Role == role.Name && x.Default)) { <text> checked="checked" </text> } title="Default value" />
|
||||
<input type="checkbox" value="true" @if (Model.PreviewRoles.Any(x => x.Role == role.Name && x.Checked)) { <text> checked="checked" </text> } name="@Html.FieldNameFor(m => m.PreviewRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.PreviewRoles[role.Index].Checked)" @if (!Model.PreviewRoles[role.Index].Enabled) { <text> disabled="disabled" </text> } />
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.PreviewRoles[role.Index].Role)
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
@@ -59,6 +67,7 @@
|
||||
<th><h3>@T("Edit own content")</h3></th>
|
||||
<th><h3>@T("Publish own content")</h3></th>
|
||||
<th><h3>@T("Delete own content")</h3></th>
|
||||
<th><h3>@T("Preview own content")</h3></th>
|
||||
</tr>
|
||||
|
||||
@foreach (var r in Model.AllRoles.Select((x, i) => new { Index = i, Name = x.Role })) {
|
||||
@@ -88,10 +97,18 @@
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<input type="checkbox" disabled="disabled" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Default)) { <text>checked="checked"</text> } title="Default value"/>
|
||||
<input type="checkbox" value="true" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Checked)) { <text>checked="checked"</text> } name="@Html.FieldNameFor(m => m.DeleteOwnRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.DeleteOwnRoles[role.Index].Checked)" @if (!Model.DeleteOwnRoles[role.Index].Enabled) { <text>disabled="disabled"</text> }/>
|
||||
</label></td>
|
||||
@Html.HiddenFor(m => m.DeleteOwnRoles[role.Index].Role)
|
||||
<input type="checkbox" disabled="disabled" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Default)) { <text> checked="checked" </text> } title="Default value" />
|
||||
<input type="checkbox" value="true" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Checked)) { <text> checked="checked" </text> } name="@Html.FieldNameFor(m => m.DeleteOwnRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.DeleteOwnRoles[role.Index].Checked)" @if (!Model.DeleteOwnRoles[role.Index].Enabled) { <text> disabled="disabled" </text> } />
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.DeleteOwnRoles[role.Index].Role)
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<input type="checkbox" disabled="disabled" @if (Model.PreviewOwnRoles.Any(x => x.Role == role.Name && x.Default)) { <text> checked="checked" </text> } title="Default value" />
|
||||
<input type="checkbox" value="true" @if (Model.PreviewOwnRoles.Any(x => x.Role == role.Name && x.Checked)) { <text> checked="checked" </text> } name="@Html.FieldNameFor(m => m.PreviewOwnRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.PreviewOwnRoles[role.Index].Checked)" @if (!Model.PreviewOwnRoles[role.Index].Enabled) { <text> disabled="disabled" </text> } />
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.PreviewOwnRoles[role.Index].Role)
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
<th><h3>@T("Edit this item")</h3></th>
|
||||
<th><h3>@T("Publish this item")</h3></th>
|
||||
<th><h3>@T("Delete this item")</h3></th>
|
||||
<th><h3>@T("Preview this item")</h3></th>
|
||||
</tr>
|
||||
|
||||
@foreach (var r in Model.AllRoles.Select((x, i) => new { Index = i, Name = x.Role, x.Checked })) {
|
||||
@@ -55,6 +56,13 @@
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.DeleteRoles[role.Index].Role)
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<input type="checkbox" disabled="disabled" @if (Model.PreviewRoles.Any(x => x.Role == role.Name && x.Default)) { <text> checked="checked" </text> } title="Current value" />
|
||||
<input type="checkbox" value="true" @if (Model.PreviewRoles.Any(x => x.Role == role.Name && x.Checked)) { <text> checked="checked" </text> } name="@Html.FieldNameFor(m => m.PreviewRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.PreviewRoles[role.Index].Checked)" @if (!Model.PreviewRoles[role.Index].Enabled) { <text> disabled="disabled" </text> } />
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.PreviewRoles[role.Index].Role)
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
@@ -65,6 +73,7 @@
|
||||
<th><h3>@T("Edit own")</h3></th>
|
||||
<th><h3>@T("Publish own")</h3></th>
|
||||
<th><h3>@T("Delete own")</h3></th>
|
||||
<th><h3>@T("Preview own")</h3></th>
|
||||
</tr>
|
||||
|
||||
@foreach (var r in Model.AllRoles.Select((x, i) => new { Index = i, Name = x.Role, x.Checked })) {
|
||||
@@ -94,10 +103,18 @@
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<input type="checkbox" disabled="disabled" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Default)) { <text>checked="checked"</text> } title="Current value"/>
|
||||
<input type="checkbox" value="true" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Checked)) { <text>checked="checked"</text> } name="@Html.FieldNameFor(m => m.DeleteOwnRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.DeleteOwnRoles[role.Index].Checked)" @if (!Model.DeleteOwnRoles[role.Index].Enabled) { <text>disabled="disabled"</text> }/>
|
||||
</label></td>
|
||||
@Html.HiddenFor(m => m.DeleteOwnRoles[role.Index].Role)
|
||||
<input type="checkbox" disabled="disabled" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Default)) { <text> checked="checked" </text> } title="Current value" />
|
||||
<input type="checkbox" value="true" @if (Model.DeleteOwnRoles.Any(x => x.Role == role.Name && x.Checked)) { <text> checked="checked" </text> } name="@Html.FieldNameFor(m => m.DeleteOwnRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.DeleteOwnRoles[role.Index].Checked)" @if (!Model.DeleteOwnRoles[role.Index].Enabled) { <text> disabled="disabled" </text> } />
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.DeleteOwnRoles[role.Index].Role)
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<input type="checkbox" disabled="disabled" @if (Model.PreviewOwnRoles.Any(x => x.Role == role.Name && x.Default)) { <text> checked="checked" </text> } title="Current value" />
|
||||
<input type="checkbox" value="true" @if (Model.PreviewOwnRoles.Any(x => x.Role == role.Name && x.Checked)) { <text> checked="checked" </text> } name="@Html.FieldNameFor(m => m.PreviewOwnRoles[role.Index].Checked)" id="@Html.FieldIdFor(m => m.PreviewOwnRoles[role.Index].Checked)" @if (!Model.PreviewOwnRoles[role.Index].Enabled) { <text> disabled="disabled" </text> } />
|
||||
</label>
|
||||
@Html.HiddenFor(m => m.PreviewOwnRoles[role.Index].Role)
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user