internal string[] GetAlgFilePath(ProjectAlgoEntity projectAlgo)
 {
     if (projectAlgo.ProjectId == 0)
     {
         return new string[1] {
                    _dbContext.Algorithms.First(x => x.Id == projectAlgo.AlgoId).FileServerPath
         }
     }
     ;
     else
     {
         return(_dbContext.Projects
                .First(x => x.Id == projectAlgo.ProjectId)
                .AlgorithmsList
                .Select(y => y.FileServerPath).Distinct().ToArray());
     }
 }
Esempio n. 2
0
        public ActionResult CheckAccess([FromBody] ProjectAlgoEntity projectAlgo)
        {
            var paths = _projectsRepository.GetAlgFilePath(projectAlgo);

            foreach (var path in paths)
            {
                if (!_filesService.IsFolderAllowed(path, _accessor.HttpContext.User.Identity.Name))
                {
                    return(Forbid());
                }

                if (!System.IO.File.Exists(path))
                {
                    return(NotFound());
                }
            }
            return(Ok());
        }