//private async Task<IList<Menu>> GetTopMenusAsync(Site siteInfo, bool isSuperAdmin, List<int> siteIdListLatestAccessed, List<int> siteIdListWithPermissions, List<string> permissionList) //{ // IList<Menu> menus = new List<Menu>(); // if (siteInfo != null && siteIdListWithPermissions.Contains(siteInfo.Id)) // { // var siteMenu = _menusAccessor.CurrentValue.FirstOrDefault(x => x.Id == IdSite); // if (siteMenu != null) // { // siteMenu.Text = siteInfo.SiteName; // menus.Add(siteMenu); // } // if (siteIdListWithPermissions.Count > 1) // { // var switchMenus = new List<Menu>(); // var allSiteMenus = new List<Menu>(); // var siteIdList = await _siteRepository.GetLatestSiteIdListAsync(siteIdListLatestAccessed, siteIdListWithPermissions); // foreach (var siteId in siteIdList) // { // var site = await _siteRepository.GetAsync(siteId); // if (site == null) continue; // allSiteMenus.Add(new Menu // { // Link = $"{_pathManager.GetAdminUrl()}?siteId={site.Id}", // Target = "_top", // Text = site.SiteName // }); // } // switchMenus.Add(new Menu // { // IconClass = "el-icon-refresh", // Link = _pathManager.GetAdminUrl(SitesLayerSelectController.Route), // Target = "_layer", // Text = "选择站点" // }); // switchMenus.Add(new Menu // { // IconClass = "ion-earth", // Text = "最近访问", // Selected = true, // Children = allSiteMenus.ToArray() // }); // menus.Add(new Menu // { // Text = "切换站点", // Children = switchMenus.ToArray() // }); // } // } // var topMenus = _menusAccessor.CurrentValue.Where(x => x.Id != IdSite).ToList(); // if (isSuperAdmin) // { // menus = topMenus; // } // else // { // foreach (var tab in topMenus) // { // if (!_authManager.IsValid(tab, permissionList)) continue; // var tabToAdd = new Menu // { // Id = tab.Id, // Text = tab.Text, // Target = tab.Target, // Link = tab.Link // }; // var tabs = tab.Children; // var tabsToAdd = new List<Menu>(); // foreach (var menu in tabs) // { // if (!_authManager.IsValid(menu, permissionList)) continue; // List<Menu> children = null; // if (menu.Children != null) // { // children = menu.Children.Where(child => _authManager.IsValid(child, permissionList)).ToList(); // } // tabsToAdd.Add(new Menu // { // Id = menu.Id, // Text = menu.Text, // Target = menu.Target, // Link = menu.Link, // Children = children // }); // } // tabToAdd.Children = tabsToAdd.ToArray(); // menus.Add(tabToAdd); // } // } // return menus; //} //private List<Menu> GetLeftMenus(Site site, bool isSuperAdmin, List<string> permissionList) //{ // var menus = new List<Menu>(); // var siteMenu = _menusAccessor.CurrentValue.FirstOrDefault(x => x.Id == IdSite); // if (siteMenu == null) return menus; // foreach (var parent in siteMenu.Children) // { // if (!isSuperAdmin && !_authManager.IsValid(parent, permissionList)) continue; // var children = new List<Menu>(); // if (parent.Children != null) // { // var tabCollection = new List<Menu>(parent.Children); // foreach (var childTab in tabCollection) // { // if (!isSuperAdmin && !_authManager.IsValid(childTab, permissionList)) continue; // children.Add(new Menu // { // Id = childTab.Id, // Link = GetHref(childTab, site.Id), // Text = childTab.Text, // Target = childTab.Target, // IconClass = childTab.IconClass // }); // } // } // menus.Add(new Menu // { // Id = parent.Id, // Link = GetHref(parent, site.Id), // Text = parent.Text, // Target = parent.Target, // IconClass = parent.IconClass, // Selected = parent.Selected, // Children = children.ToArray() // }); // } // return menus; //} //private static string GetHref(Menu tab, int siteId) //{ // var href = tab.Link; // if (!PageUtils.IsAbsoluteUrl(href)) // { // href = PageUtils.AddQueryString(href, // new NameValueCollection { { "siteId", siteId.ToString() } }); // } // return href; //} private async Task <(bool redirect, string redirectUrl)> AdminRedirectCheckAsync() { var redirect = false; var redirectUrl = string.Empty; var config = await _configRepository.GetAsync(); if (string.IsNullOrEmpty(_settingsManager.Database.ConnectionString) || await _configRepository.IsNeedInstallAsync()) { redirect = true; redirectUrl = _pathManager.GetAdminUrl(InstallController.Route); } else if (config.Initialized && config.DatabaseVersion != _settingsManager.Version) { redirect = true; redirectUrl = _pathManager.GetAdminUrl(SyncDatabaseController.Route); } return(redirect, redirectUrl); }
public async Task <ActionResult <GetResult> > Get() { if (!await _configRepository.IsNeedInstallAsync()) { return(new GetResult { Forbidden = true }); } var rootWritable = false; try { var filePath = PathUtils.Combine(_settingsManager.ContentRootPath, "version.txt"); FileUtils.WriteText(filePath, _settingsManager.Version); var ioPermission = new FileIOPermission(FileIOPermissionAccess.Write, _settingsManager.ContentRootPath); ioPermission.Demand(); rootWritable = true; } catch { // ignored } var siteFilesWritable = false; try { var filePath = PathUtils.Combine(_settingsManager.WebRootPath, DirectoryUtils.SiteFiles.DirectoryName, "index.html"); FileUtils.WriteText(filePath, Constants.Html5Empty); var ioPermission = new FileIOPermission(FileIOPermissionAccess.Write, PathUtils.Combine(_settingsManager.ContentRootPath, DirectoryUtils.SiteFiles.DirectoryName)); ioPermission.Demand(); siteFilesWritable = true; } catch { // ignored } var result = new GetResult { Version = _settingsManager.Version, FrameworkDescription = _settingsManager.FrameworkDescription, OSDescription = _settingsManager.OSDescription, ContentRootPath = _settingsManager.ContentRootPath, WebRootPath = _settingsManager.WebRootPath, RootWritable = rootWritable, SiteFilesWritable = siteFilesWritable, DatabaseTypes = new List <Select <string> >(), AdminUrl = _pathManager.GetAdminUrl(LoginController.Route) }; foreach (var databaseType in ListUtils.GetEnums <DatabaseType>()) { result.DatabaseTypes.Add(new Select <string>(databaseType)); } return(result); }