public List <DataItem> GetParents(int nodeID, int userID) { List <DataItem> result = new List <DataItem>(); int? nID = nodeID; bool hasPermission = false; while (nID.HasValue) { DataItem folder = _dataItemRepository.GetByID(nID.Value); result.Add(folder); if (_userDataItemRepository.HasPermission(nID.Value, userID)) { nID = null; hasPermission = true; } else { nID = folder.ParentFolderID; } } if (!hasPermission) { return(new List <DataItem>()); } result.Reverse(); return(result); }
public bool HasNodePermission(int nodeID, int userID) { if (_userRepository.GetByID(userID).IsAdministrator) { return(true); } bool hasPermission = false; var node = _dataItemRepository.GetByID(nodeID); hasPermission = _userDataItemRepository.HasPermission(nodeID, userID); while (node.ParentFolderID.HasValue && !hasPermission) { node = _dataItemRepository.GetByID(node.ParentFolderID.Value); hasPermission = _userDataItemRepository.HasPermission(node.ID, userID); } return(hasPermission); }