예제 #1
0
        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);
        }
예제 #2
0
        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);
        }