public async Task SetUserProjectRole([FromBody] ProjectUserWithRole foo) { _logger.LogInformation($"{foo.Project} {foo.User} {foo.Role}"); if (!(await _authService.AuthorizeProjectRole(eProjectRoles.Manager, foo.Project))) { return; } await _projectRolesService.SetProjectRole(foo.Project, foo.User, foo.Role); }
public async Task <IActionResult> SetUserProjectRole([FromBody] PutUserRoleRequest request) { var keyAuthResult = await _authService.AuthByApiKey(); if (keyAuthResult.User == null) { return(BadRequest(ErrorResponse.GetErrorList(keyAuthResult.ErrorText))); } var project = _ticketService.GetProject(request.Project); if (project == null) { return(BadRequest(ErrorResponse.GetErrorList($"Project: {request.Project} does not exist!"))); } if (!await _authService.AuthorizeProjectRole(eProjectRoles.Manager, project.Id, user: keyAuthResult.User)) { return(Unauthorized(ErrorResponse.GetUnauthorizedErrorList(keyAuthResult.User.Identity.Name, project.Name, eProjectRoles.Manager))); } await _projectRoleService.SetProjectRole(request.Project, request.User, request.Role); var baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}"; var locationUrl = baseUrl + "/" + ApiRoutes.UserRoles.GetAllByUser.Replace("{userName}", request.User); var response = _mapper.Map <UserRoleResponse>(request); return(Created(locationUrl, response)); }
public async Task <IActionResult> ProjectCreate([FromBody] CreateProjectRequest request) { var keyAuthResult = await _authService.AuthByApiKey(); if (keyAuthResult.User == null) { return(BadRequest(ErrorResponse.GetErrorList(keyAuthResult.ErrorText))); } var newProject = _ticketService.AddProject(request.Name, request.Description); if (newProject == null) { return(BadRequest(ErrorResponse.GetErrorList("validation error"))); } await _projectRoleService.SetProjectRole(newProject.Name, keyAuthResult.User.Identity.Name, eProjectRoles.Manager); var baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}"; var locationUrl = baseUrl + "/" + ApiRoutes.Projects.Get.Replace("{projectName}", newProject.Name); var response = _mapper.Map <ProjectResponse>(newProject); return(Created(locationUrl, response)); }