async public Task <bool> UpdateAppState(string selectedFolderId = null) { var authState = await _authenticationStateProvider.GetAuthenticationStateAsync(); if (authState.User.Identity.IsAuthenticated) { var userFolders = await _api.GetFoldersByAuthorizedUser(); if (userFolders.Count > 0) { AllowedFolders = userFolders.Select(o => new AllowedFolder() { Name = o.Name, Id = o.Id, IsAdministrator = o.IsAdministrator }).ToList(); if (selectedFolderId == null) { selectedFolderId = await _localStorage.GetItemAsync <string>("folderId"); if (selectedFolderId == null && AllowedFolders.Any()) { selectedFolderId = AllowedFolders.FirstOrDefault().Id; } } if (selectedFolderId != null) { var selectedFolder = userFolders.FirstOrDefault(g => g.Id == selectedFolderId); if (selectedFolder != null) { CurrentFolderName = selectedFolder.Name; CurrentFolderId = selectedFolder.Id; CurrentFolderIsAdministrator = selectedFolder.IsAdministrator; var folderTypes = await _api.GetFolderTypeAsMenuOptionList(selectedFolder.Id); DataTypes = folderTypes.Select(o => new FolderTypeNav() { Text = o.Name, Data = o.Id }).ToList(); await _localStorage.SetItemAsync("folderId", selectedFolderId); } } } else { AllowedFolders = new List <AllowedFolder>(); CurrentFolderId = default(string); CurrentFolderName = default(string); CurrentFolderIsAdministrator = false; DataTypes = new List <FolderTypeNav>(); } return(true); } return(false); }
/// <summary> /// Determines if specified folder under root is allowed or not. /// </summary> /// <param name="folderName">Path to folder</param> /// <returns>True if folder is allowed</returns> private bool IsAllowed(string folderName) { if (String.IsNullOrEmpty(AllowedFolders) || (folderName.ToLowerCSafe() == FullStartingPath.ToLowerCSafe())) { return(true); } foreach (string folder in AllowedFolders.Split(';')) { if (folderName.StartsWithCSafe(DirectoryHelper.CombinePath(FullStartingPath.ToLowerCSafe(), folder))) { return(true); } } return(false); }