public async Task <ActionResult <DeploymentEntity> > Create([FromBody] CreateDeploymentRequestViewModel createDeployment) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } return(Created(string.Empty, await _deploymentService.CreateAsync(createDeployment.ToDomainModel()))); }
public async Task <ActionResult <DeploymentEntity> > Create([FromBody] CreateDeploymentRequestViewModel createDeployment) => Created(string.Empty, await _deploymentService.CreateAsync(createDeployment.ToDomainModel()));
/// <inheritdoc/> protected override async Task HandleRequirementAsync( AuthorizationHandlerContext context, GiteaDeployPermissionRequirement requirement) { if (_httpContext == null) { return; } string org = _httpContext.GetRouteValue("org")?.ToString(); string app = _httpContext.GetRouteValue("app")?.ToString(); if (string.IsNullOrWhiteSpace(org) || string.IsNullOrWhiteSpace(app)) { _httpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; return; } if (!_settings.CheckTeamMembershipForDeploy) { RepositoryClient.Model.Repository repository = await _giteaApiWrapper.GetRepository(org, app); if (repository?.Permissions?.Push == true || repository?.Permissions?.Admin == true) { context.Succeed(requirement); } else { _httpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; } return; } string environment = _httpContext.GetRouteValue("environment")?.ToString(); if (string.IsNullOrEmpty(environment)) { _httpContext.Request.EnableBuffering(); using (var reader = new StreamReader( _httpContext.Request.Body, encoding: Encoding.UTF8, detectEncodingFromByteOrderMarks: false, bufferSize: 1024, leaveOpen: true)) { string body = await reader.ReadToEndAsync(); try { CreateDeploymentRequestViewModel model = JsonConvert.DeserializeObject <CreateDeploymentRequestViewModel>(body); environment = model.Environment.Name; } catch { reader.Close(); _httpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; return; } // Reset the request body stream position so the next middleware can read it _httpContext.Request.Body.Position = 0; } } string matchTeam = $"Deploy-{environment}"; List <Team> teams = await _giteaApiWrapper.GetTeams(); bool any = teams.Any(t => t.Organization.Username.Equals( org, System.StringComparison.OrdinalIgnoreCase) && t.Name.Equals(matchTeam, System.StringComparison.OrdinalIgnoreCase)); if (any) { context.Succeed(requirement); } else { _httpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; } }