Example #1
0
        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);
                    }
                }
            }
        }
Example #3
0
        // 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);
            }));
        }
Example #4
0
        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);
            }
        }
Example #6
0
        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));
 }