private async Task Iterate(SiteMapNode siteMap, AdminSiteMap siteMapNode) { await PopulateNode(siteMap, siteMapNode); foreach (var item in siteMapNode.ChildNodes) { var mainsite = new SiteMapNode(); siteMap.ChildNodes.Add(mainsite); await Iterate(mainsite, item); } }
private async Task PopulateNode(SiteMapNode siteMap, AdminSiteMap siteNode) { siteMap.ActionName = siteNode.ActionName; siteMap.AllPermissions = siteNode.AllPermissions; siteMap.ControllerName = siteNode.ControllerName; siteMap.IconClass = siteNode.IconClass; siteMap.OpenUrlInNewTab = siteNode.OpenUrlInNewTab; siteMap.ResourceName = siteNode.ResourceName; siteMap.SystemName = siteNode.SystemName; siteMap.Url = siteNode.Url; if (siteNode.PermissionNames.Any()) { if (siteNode.AllPermissions) { siteMap.Visible = true; foreach (var permissionName in siteNode.PermissionNames) { if (!await _permissionService.Authorize(permissionName.Trim())) { siteMap.Visible = false; } } } else { siteMap.Visible = false; foreach (var permissionName in siteNode.PermissionNames) { if (await _permissionService.Authorize(permissionName.Trim())) { siteMap.Visible = true; } } } } else { siteMap.Visible = true; } }