public static Sitemap BuildSitemap(Site site, ContentEnvironment environment, Func <CmsPage, bool> sitemapTrim)
        {
            var siteStructure = SiteStructureMapBuilder.BuildStructureMap(site);

            var pageRepostiory = new CmsPageRepository();
            var allPages       = pageRepostiory
                                 .FindContentVersions(null, environment)
                                 .Result
                                 .Where(sitemapTrim)
                                 .ToDictionary(x => x.ContentId);

            var sitemap = new Sitemap();

            if (site.HomepageId != null && allPages.ContainsKey(site.HomepageId.Value))
            {
                sitemap.HomePage = allPages[site.HomepageId.Value];
            }

            AttachChildNodes(sitemap, siteStructure, string.Empty, allPages);
            return(sitemap);
        }
Exemple #2
0
        private static Dictionary <Guid, PermissionRuleSet> CalculatePermissionsForSite(Site site, ILookup <Guid, PermissionRule> allPermissions)
        {
            PermissionRuleSet defaultPermissions;

            if (site.IsFrontendSite)
            {
                defaultPermissions = new PermissionRuleSet();
                var readRule = new PermissionRule
                {
                    AppliesToRoleName = "Everyone",
                    PermissionType    = PermissionType.Grant,
                    PrivilegeName     = KnownPrivilegeNames.Read
                };
                var createRule = new PermissionRule
                {
                    AppliesToRoleName = "Everyone",
                    PermissionType    = PermissionType.Deny,
                    PrivilegeName     = KnownPrivilegeNames.Create
                };
                var updateRule = new PermissionRule
                {
                    AppliesToRoleName = "Everyone",
                    PermissionType    = PermissionType.Deny,
                    PrivilegeName     = KnownPrivilegeNames.Update
                };
                var deleteRule = new PermissionRule
                {
                    AppliesToRoleName = "Everyone",
                    PermissionType    = PermissionType.Deny,
                    PrivilegeName     = KnownPrivilegeNames.Delete
                };

                defaultPermissions.Add(readRule);
                defaultPermissions.Add(createRule);
                defaultPermissions.Add(updateRule);
                defaultPermissions.Add(deleteRule);
            }
            else
            {
                defaultPermissions = new PermissionRuleSet();
                var readRule = new PermissionRule
                {
                    AppliesToRoleName = "BackendUsers",
                    PermissionType    = PermissionType.Grant,
                    PrivilegeName     = KnownPrivilegeNames.Read
                };
                var createRule = new PermissionRule
                {
                    AppliesToRoleName = "BackendUsers",
                    PermissionType    = PermissionType.Grant,
                    PrivilegeName     = KnownPrivilegeNames.Create
                };
                var updateRule = new PermissionRule
                {
                    AppliesToRoleName = "BackendUsers",
                    PermissionType    = PermissionType.Grant,
                    PrivilegeName     = KnownPrivilegeNames.Update
                };
                var deleteRule = new PermissionRule
                {
                    AppliesToRoleName = "BackendUsers",
                    PermissionType    = PermissionType.Grant,
                    PrivilegeName     = KnownPrivilegeNames.Delete
                };


                defaultPermissions.Add(readRule);
                defaultPermissions.Add(createRule);
                defaultPermissions.Add(updateRule);
                defaultPermissions.Add(deleteRule);
            }

            var siteStructure = SiteStructureMapBuilder.BuildStructureMap(site);

            Dictionary <Guid, PermissionRuleSet> newRules = new Dictionary <Guid, PermissionRuleSet>();

            foreach (var page in siteStructure.ChildNodes)
            {
                var subDict = CalculatePermissions(page, allPermissions, defaultPermissions);
                foreach (var kvp in subDict)
                {
                    newRules.Add(kvp.Key, kvp.Value);
                }
            }
            return(newRules);
        }