Ejemplo n.º 1
0
        public IActionResult JoinProjectWithVulnerability([FromBody] JoinProjectViewModel model)
        {
            try
            {
                var token   = Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
                var handler = new JwtSecurityTokenHandler();

                model.UserId = Guid.Parse(handler.ReadJwtToken(token).Claims.ToList().Find(x => x.Type.Contains("nameidentifier")).Value);

                return(Ok(new ResultResponseViewModel <List <string> >()
                {
                    IsSuccess = true,
                    Message = "Vinculação criada com sucesso.",
                    Response = this._projectService.JoinProjectWithVulnerability(model).ToList()
                }));
            }
            catch (Exception e)
            {
                return(Ok(new ResultResponseViewModel <string>()
                {
                    IsSuccess = false, Message = e.Message, Response = string.Empty
                }));
            }
        }
Ejemplo n.º 2
0
        public IEnumerable <string> JoinProjectWithVulnerability(JoinProjectViewModel model)
        {
            using (var uow = new UnitOfWork(ConnectionString))
            {
                var lstDuplicates = new List <string>();
                //Lista dos ambientes inseridos, será
                //utilizado para criação das MIDIAS enviadas
                var listOfProjectVulnerabilities = new List <Guid>();
                //Lista dos arquivos criados durante a
                //vinculação dos projetos x vulnerabilidades
                var listOfFiles = new List <Guid>();

                //Insere cada ambiente inserido, gerando seu ID
                foreach (var environment in model.ListOfUris)
                {
                    //Verifica se o ambiente enviado (IP ou URL),
                    //o Projeto
                    //e a Vulnerabilidade já estão vinculados
                    if (uow._projectVultR.Any(x =>
                                              x.ProjectId.Equals(model.ProjectId) &&
                                              x.VulnerabilityId.Equals(model.VulnerabilityId) &&
                                              x.Environment.Equals(environment.Uri)))
                    {
                        lstDuplicates.Add(environment.Uri);
                        continue;
                    }

                    var projectVulnerabilityId = Guid.NewGuid();
                    listOfProjectVulnerabilities.Add(projectVulnerabilityId);

                    var methodProtocolId = uow._methodProtocolR
                                           .SingleOrDefault(x => x.Name.Equals(environment.Method)).Id;

                    uow._projectVultR.Add(new ProjectVulnerabilityEntity
                    {
                        Id                = projectVulnerabilityId,
                        Status            = Enums.ProjStatus.New,
                        Environment       = environment.Uri,
                        Port              = environment.Port,
                        FiledOrCookieName = environment.FormCookie,
                        Observation       = string.Empty,

                        ProjectId        = model.ProjectId,
                        VulnerabilityId  = model.VulnerabilityId,
                        MethodProtocolId = methodProtocolId,
                        UserId           = model.UserId
                    });
                }

                foreach (var media in model.ListOfFiles)
                {
                    var mediaId = Guid.NewGuid();
                    listOfFiles.Add(mediaId);

                    uow._mediaR.Add(new MediaEntity
                    {
                        Id      = mediaId,
                        Name    = media.Name,
                        Archive = media.Base64
                    });
                }
                //Adiciona para cada item de projeto-vulnerabilidade,
                //todas as mídias enviadas
                this.JoinMediaWithProjectVulnerability(listOfProjectVulnerabilities, listOfFiles, uow);
                //Salva na base de dados todas insersões
                uow.Complete();

                return(lstDuplicates);
            }
        }