public void GetNavigation(NavigationBuilder builder) { var contentTypeDefinitions = _contentDefinitionManager .ListTypeDefinitions().OrderBy(d => d.Name); var contentTypes = contentTypeDefinitions .Where(ctd => ctd.Settings.GetModel <ContentTypeSettings>().Listable) .OrderBy(ctd => ctd.DisplayName); if (contentTypes.Any()) { builder .AddImageSet("content") .Add(T("Content"), "1.4", menu => { menu.LinkToFirstChild(false); foreach (var contentTypeDefinition in contentTypes) { if (string.Compare( contentTypeDefinition.Settings["ContentTypeSettings.Listable"], "true", StringComparison.OrdinalIgnoreCase) == 0) { ContentTypeDefinition definition = contentTypeDefinition; menu.Add(T(contentTypeDefinition.DisplayName), "5", item => item.Action("List", "Admin", new RouteValueDictionary { { "area", "Laser.Orchard.AdvancedSearch" }, { "model.Id", definition.Name } }) .Permission(DynamicPermissions.CreateDynamicPermission( DynamicPermissions.PermissionTemplates["EditOwnContent"], definition))); } } }); } }
public void Adjust(CheckAccessContext context) { if (!context.Granted && context.Content.Is <ICommonPart>()) { if (OwnerVariationExists(context.Permission) && HasOwnership(context.User, context.Content)) { context.Adjusted = true; context.Permission = GetOwnerVariation(context.Permission); } var typeDefinition = context.Content.ContentItem.TypeDefinition; // replace permission if a content type specific version exists if (typeDefinition.Settings.GetModel <ContentTypeSettings>().Securable) { var permission = GetContentTypeVariation(context.Permission); if (permission != null) { context.Adjusted = true; context.Permission = DynamicPermissions.CreateDynamicPermission(permission, typeDefinition); } } } }
// POST protected override DriverResult Editor(SeoPart part, IUpdateModel updater, dynamic shapeHelper) { if (!_authorizer.Authorize(DynamicPermissions.CreateDynamicPermission(SeoPermissions.EditSeoPart, part.ContentItem.TypeDefinition))) { return(null); } SeoPartEditViewModel model = new SeoPartEditViewModel(part); SeoPartSettings settings = part.Settings.GetModel <SeoPartSettings>(); model.DefaultRobots = settings.DefaultRobotsMeta; model.DefaultDescription = _seoService.GenerateDefaultDescription(part); model.DefaultKeywords = _seoService.GenerateDefaultKeywords(part); model.DefaultCanonicalUrl = _seoService.GenerateCanonicalUrl(part); if (updater != null && updater.TryUpdateModel(model, Prefix, null, null)) { part.Description = model.OverrideDescription ? model.Description : String.Empty; part.OverrideKeywords = model.OverrideKeywords; part.Keywords = model.Keywords; part.OverrideRobots = model.OverrideRobots; part.Robots = model.OverrideRobots ? model.Robots : model.DefaultRobots; part.CanonicalUrl = model.CanonicalUrl; } return(ContentShape("Parts_SeoPart_Edit", () => { return shapeHelper.EditorTemplate( TemplateName: TemplateName, Model: model, Prefix: Prefix); })); }
public IEnumerable <Permission> GetPermissions() { var seoEnabledTypes = _contentDefinitionManager.ListTypeDefinitions() .Where(ctd => ctd.Parts.Where(ctpd => ctpd.PartDefinition.Name == "SeoPart").Any()); foreach (var typeDefinition in seoEnabledTypes) { yield return(DynamicPermissions.CreateDynamicPermission(EditSeoPart, typeDefinition)); } yield return(ManageSeo); }
public void Adjust(CheckAccessContext context) { if (!context.Granted && context.Permission.Name == Permissions.ManageMenus.Name && context.Content != null) { var menuAsContentItem = context.Content.As <ContentItem>(); if (menuAsContentItem == null || menuAsContentItem.Id <= 0) { return; } context.Adjusted = true; context.Permission = DynamicPermissions.CreateMenuPermission(menuAsContentItem, _contentManager); } }
public int UpdateFrom2() { //Assigns the "Create Permission" to all roles able to create contents var contentEditPermissions = new[] { Core.Contents.Permissions.EditContent, Core.Contents.Permissions.EditOwnContent }; var dynamicPermissions = new Orchard.Core.Contents.DynamicPermissions(_contentDefinitionManager); var securableTypes = _contentDefinitionManager.ListTypeDefinitions() .Where(ctd => ctd.Settings.GetModel <ContentTypeSettings>().Securable); var permissionTemplates = Core.Contents.DynamicPermissions.PermissionTemplates; List <object> dynContentPermissions = new List <object>(); foreach (var typeDefinition in securableTypes) { dynContentPermissions.Add(new { Permission = DynamicPermissions.CreateDynamicPermission(permissionTemplates[Core.Contents.Permissions.EditContent.Name], typeDefinition), CreatePermission = DynamicPermissions.CreateDynamicPermission(permissionTemplates[Core.Contents.Permissions.CreateContent.Name], typeDefinition) }); dynContentPermissions.Add(new { Permission = DynamicPermissions.CreateDynamicPermission(permissionTemplates[Core.Contents.Permissions.EditOwnContent.Name], typeDefinition), CreatePermission = DynamicPermissions.CreateDynamicPermission(permissionTemplates[Core.Contents.Permissions.CreateContent.Name], typeDefinition) }); } var roles = _roleService.GetRoles(); foreach (var role in roles) { var existingPermissionsNames = role.RolesPermissions.Select(x => x.Permission.Name).ToList(); var checkForDynamicPermissions = true; var updateRole = false; if (existingPermissionsNames.Any(x => x == Core.Contents.Permissions.CreateContent.Name)) { continue; // Skipping this role cause it already has the Create content permission } var simulation = UserSimulation.Create(role.Name); foreach (var contentEditPermission in contentEditPermissions) { if (_authorizationService.TryCheckAccess(contentEditPermission, simulation, null)) { existingPermissionsNames.Add(Core.Contents.Permissions.CreateContent.Name); checkForDynamicPermissions = false; updateRole = true; break; } } if (checkForDynamicPermissions) { foreach (var dynContentPermission in dynContentPermissions) { if (!existingPermissionsNames.Contains(((dynamic)dynContentPermission).CreatePermission.Name)) // Skipping this permission cause it already has the Create content variation { if (_authorizationService.TryCheckAccess(((dynamic)dynContentPermission).Permission, simulation, null)) { existingPermissionsNames.Add(((dynamic)dynContentPermission).CreatePermission.Name); updateRole = true; } } } } if (updateRole) { var rolePermissionsNames = existingPermissionsNames; _roleService.UpdateRole(role.Id, role.Name, rolePermissionsNames); } } return(3); }
private static Permission GetContentTypeVariation(Permission permission) { return(DynamicPermissions.ConvertToDynamicPermission(permission)); }